正直に言うと、Angular で何をしているのかよくわからないので、これはおそらくひどいコーディング方法です。<select>
いずれにせよ、いくつかのデータを要素に非同期的にロードしようとしています。
テンプレート HTML は次のとおりです。
<div ng-include src="'scripts/common/toolbar/toolbar.html'"></div>
<div class="wrapper">
<div ng-include src="'scripts/common/header/pageheader.html'"></div>
<label>Advertisers:
<select ng-model="selectedAdvertiser" ng-options="adv as adv.name for adv in advertisers"></select>
</label>
</div>
これがコントローラーです (テンプレートのコントローラーは $routeProvider の HomeCtrl です)
angular.module('feedsmanagerApp').controller('HomeCtrl', function ($scope, $rootScope, $location, ngDialog, userService) {
$scope.advertisers = [];
userService.getUser().then(function(user) {
$scope.$evalAsync(function() {
$scope.advertisers = user.getAdvertisers();
})
});
//more stuff down here....
user.getAdvertisers() から返されるデータは次のようになります。
[{name:'aaaa', id:0}, {name:'bbbb', id:1}];
最後に、ここに userService があります
var userPromise,
getUser = function() {
if(!userPromise) {
var deferred = $q.defer();
userPromise = deferred.promise;
deferred.resolve(User.createFromServerData(null));
}
return userPromise;
};
$timeout、$scope.$apply、$scope.$evalAsync を使用してみました...私はほとんどアイデアがありません。選択に表示されるデータをまったく取得できません。どんな助けでも大歓迎です!ありがとう。