无法将 ngResource 绑定到 ngOptions

Cannot bind ngResource to ngOptions

我有一个 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"]; 

您的回复中的 JSON 是什么样子的?您的 ng-options 表达式很可能是错误的。您需要告诉它您想要在 select.

中显示什么

更改您的 ng-options:使其看起来像这样:

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

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

看看这个文档:https://docs.angularjs.org/api/ng/directive/ngOptions

这是一个有效的 JsFiddle from your ,展示了从那里返回的数据。

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

JS:

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