Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS ng选项Ajax默认选定选项_Javascript_Jquery_Ajax_Angularjs - Fatal编程技术网

Javascript AngularJS 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" } ] 当我的控制器中的其他东西被激活时,我的选择列表将正确填充所有

如何在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"
  }
]
当我的控制器中的其他东西被激活时,我的选择列表将正确填充所有我的选项,此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;i 这将告诉我,
response.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;
  }
});