javascript - ng-options生成无法设置默认选项
伊谢尔伦
伊谢尔伦 2017-04-11 12:29:43
[JavaScript讨论组]

1.我创建了一个json文件

2、使用$http服务请求并获得了返回数据

3、使用ng-options来生成select的时候我设置了默认选中项

可是别的功能都成功了,唯独默认选中项设置失败,无论如何都没办法生成。请问这如何解决?
这是我的前端代码:

前端菜鸟,请大神赐教,感激不尽





    
    Title


    

您选择的是:

他的地址是:

他的国度是:

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
伊谢尔伦

这个问题是考验基础问题了。

首先 ng-init 前面的回答都说指出来了,是在compile的时候调用,而此时 selects 还未从远程获取到值,所以自然 obj 是空的。

其次,选中状态为空,是由此时的 $scope.obj 还是空的,已知对应的 ng-options 中找不到相对应的,所以就空了,这里的 $scope.obj 取决于 for item,所以赋值给 obj,也应该是 { "Name": "菜鸟教程1", "Url": "www.runoob.com", "Country": "CN" } 这类数据。

整体的结果应该:

<select ng-model="obj" ng-options="item.Name for item in selects"></select>
$scope.selects = res.data.sites;
$scope.obj = $scope.selects[0];

一个完整的示例。

巴扎黑

这样写是没问题的,我觉得应该是你数据还没拿到你的页面就开始渲染了,所以ng-init里selects当时还没拿到数据。

app.controller('agCtrl1',function($scope,$http){
        $http({
            method:'get',
            url:'1.json'
        }).then(function(res){
            $scope.selects=res.data.sites;
            $scope.obj = $scope.selects[0];
        });
    });
    
    

在拿到数据后自己主动给obj赋值 就可以拿到默认值了。

ringa_lee
ng-init="obj=selects[0]"

ng-init在$scope.selects还没有获取到数据的时候就运行了,所以应该在$scope.selects=res.data.sites;后面添加$scope.obj = $scope.selects[0];

ng-init只用在一些初始化定义上


另外一个问题obj的作用域问题
使用下面的写法

$scope.model={
    obj:'',
    selects=[]
  }
ng-model="model.obj"
ng-repeat="item in model.selects"
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号