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