无法将 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;
});
}
我有一个 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;
});
}