3

正直に言うと、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 を使用してみました...私はほとんどアイデアがありません。選択に表示されるデータをまったく取得できません。どんな助けでも大歓迎です!ありがとう。

4

2 に答える 2

0

私はこれがうまくいくはずだと思っています:

userService.getUser().then(function(user) {
    $scope.advertisers = user.getAdvertisers();
});

または、これgetAdvertisersはプロミスを返す場合:

userService.getUser().then(function(user) {
    user.getAdvertisers().then(function (advertisers) {
        $scope.advertisers = advertisers;
    });
});
于 2015-03-18T23:57:46.067 に答える
-1

どうでも。データの取得方法に問題がありました。ああ!

于 2015-03-19T00:40:43.853 に答える