Javascript AngularJS ng选项Ajax默认选定选项
如何在ng选项中基于ajax结果设置默认值Javascript AngularJS ng选项Ajax默认选定选项,javascript,jquery,ajax,angularjs,Javascript,Jquery,Ajax,Angularjs,如何在ng选项中基于ajax结果设置默认值 <select ng-model="model.stuff" ng-options="o.name for o in options track by o.id"></select> 示例数据如下所示 [ { "id": 1, "name": "Foo" }, { "id": 2, "name": "Bar" } ] 当我的控制器中的其他东西被激活时,我的选择列表将正确填充所有
<select ng-model="model.stuff" ng-options="o.name for o in options track by o.id"></select>
示例数据如下所示
[
{
"id": 1,
"name": "Foo"
},
{
"id": 2,
"name": "Bar"
}
]
当我的控制器中的其他东西被激活时,我的选择列表将正确填充所有我的选项,此get将被触发
但有时我需要在加载ajax数据后设置默认值。例如,我需要从我的数据数组中加载ID1
这并不意味着加载response.data[1]
这意味着我必须在response.data
中搜索并查找id为1的项目。这适用于此方法
function getArrayIndex(key, source){
for (var i = 0; i < source.length; i++) {
if (source[i].id == key) {
return i;
}
}
}
函数getArrayIndex(键,源){
对于(变量i=0;iresponse.data[0]
具有id:1
,因此我希望在ajax加载数据时使用该值作为默认选择值
我怎样才能做到这一点
我读了一些其他的问题,但我什么都没做。。。我已经尝试过用
id
值和整个对象设置ng init
,但不起作用…这里的解决方案是将以下内容添加到控制器中
$scope.model = { stuff: null };
$scope.$watch('options', function() {
if ($scope.options) {
$scope.model.stuff = $scope.options[0].name;
}
});
要匹配您的示例,请将$scope.model设置为键为“stuff”的对象。$scope对象“选项”更改时,$watch将触发。“if”语句确保在“options”设置为null时不会发生错误
有关$watch的更多信息,请参阅
$scope.model = { stuff: null };
$scope.$watch('options', function() {
if ($scope.options) {
$scope.model.stuff = $scope.options[0].name;
}
});