ngOptions Ошибка при возврате данных

console.log в контроллере выводится объект {name:'12345235'} это хорошо, но пытается использовать ng-option Атрибут в разделе HTML выдает приведенную ниже ошибку. Я пытался вернуть несколько вложенных объектов из службы, но все равно получаю приведенную ниже ошибку в консоли, любые советы / помощь приветствуются, озадачены на этом этапе, не уверен, что еще я могу попробовать?

HTML:

<html ng-app="app">
...
<body>
    ...
    <div ng-controller="SetsController">
        <section ng-options="set in sets"><p>{{set.name}}</p></section>
    </div>
    ...
</body>
</html>

Угловой код:

angular.module('app', []);

angular.module('app').controller('SetsController', ['$scope', 'setsService', function($scope, setsService){
    $scope.sets = setsService.display('123', 3);
    console.log($scope.sets);
}]);

angular.module('app').service('setsService', function(){
    this.display = function(setId, limit) {
        return {name:'12345235'}
    }
});

Ошибка консоли:

Error: [$compile:ctreq] http://errors.angularjs.org/1.4.7/$compile/ctreq?p0=select&p1=ngOptions
I/<@http://devt.local.one/core/lib/angular.js:6:416
t@http://devt.local.one/core/lib/angular.js:59:233
t@http://devt.local.one/core/lib/angular.js:59:300
K@http://devt.local.one/core/lib/angular.js:62:78
g@http://devt.local.one/core/lib/angular.js:54:410
K@http://devt.local.one/core/lib/angular.js:61:1
g@http://devt.local.one/core/lib/angular.js:54:410
g@http://devt.local.one/core/lib/angular.js:54:433
g@http://devt.local.one/core/lib/angular.js:54:433
g@http://devt.local.one/core/lib/angular.js:54:433
g@http://devt.local.one/core/lib/angular.js:54:433
W/<@http://devt.local.one/core/lib/angular.js:53:480
zc/d/</<@http://devt.local.one/core/lib/angular.js:20:99
lf/this.$get</n.prototype.$eval@http://devt.local.one/core/lib/angular.js:133:217
lf/this.$get</n.prototype.$apply@http://devt.local.one/core/lib/angular.js:133:446
zc/d/<@http://devt.local.one/core/lib/angular.js:20:57
e@http://devt.local.one/core/lib/angular.js:39:191
zc/d@http://devt.local.one/core/lib/angular.js:19:1
zc@http://devt.local.one/core/lib/angular.js:20:274
Zd@http://devt.local.one/core/lib/angular.js:19:83
@http://devt.local.one/core/lib/angular.js:293:238
a@http://devt.local.one/core/lib/angular.js:174:399
Hf/c@http://devt.local.one/core/lib/angular.js:35:212

http://devt.local.one/core/lib/angular.js
Line 107

3 ответа

Решение

ngOptions директива требует select директивы. Он не может использоваться самостоятельно. Таким образом, вы должны либо использовать правильную структуру с тегом выбора вместо раздела (и не забудьте ngModel тоже в этом случае) или используйте ngRepeat:

<div ng-controller="SetsController">
    <section ng-repeat="set in sets"><p>{{set.name}}</p></section>
</div>

Параметры ng должны использоваться с тегом select. см. документацию ng-options. В этом случае вам нужно использовать ng-repeat

например,

<select ng-model="myColor" ng-options="color.name for color in colors">
   <option value="">-- choose color --</option>
</select>

в вашем случае вам нужно использовать ng-repeat как,

<section ng-repeat="set in sets"><p>{{set.name}}</p></section>

В моем случае я получил эту ошибку, потому что у меня нет ng-model приписывать <select>

Другие вопросы по тегам