无法将ngResource绑定到ngOptions

时间:2015-03-09 01:57:29

标签: angularjs ng-options ngresource

我有一个select元素,我希望它填充了通过ngResource调用资源的结果。

 <select chosen="" 
         required 
         data-ng-model="coolStuffSelected" 
         data-ng-options="stuff for stuff in coolStuff" 
         class="chosen-select input-md"></select>

在我的控制器中我有

CoolStuffResource.query(function(result){
  $scope.coolStuff = result;
  console.log(JSON.stringify($scope.coolStuff));
  // prints ["foo","bar","gaz","waka"]
});

我看到结果已记录,但select为空。我做错了什么?

更新:我尝试了这个虽然很糟糕的解决方法,即访问ng-model:

MyCoolService.query(function(result){
  $scope.coolStuff = result;
  $scope.coolStuffSelected = null;
});

这适用于Chrome,但在Safari中不起作用。简单地对这些值进行硬编码在两种浏览器中都可以正常工作:

$scope.coolStuff = ["foo", "bar", "gaz", "waka"]; 

2 个答案:

答案 0 :(得分:1)

这是JsFiddle中有效的other question,展示了从那里返回的数据。

<select ng-model="selected" ng-options="d for d in data"></select>  

JS:

function MyCtrl($scope) {
    MyCoolResource.query(function(result){
       $scope.data = result;
    });
}

答案 1 :(得分:0)

JSON在您的回复中是什么样的?您的ng-options表达式很可能是错误的。你需要告诉它你想要在你的选择中显示什么。

更改你的ng选项:所以它看起来像这样:

ng-options="stuff as stuff.label for coolstuff"

将stuff.label更改为您想要在选择中显示的任何属性。

请查看此文档:https://docs.angularjs.org/api/ng/directive/ngOptions