javascript - 异步 ngOptions

标签 javascript angularjs asynchronous angularjs-ng-options

老实说,我不知道我在 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>

这里是 Controller (模板的 Controller 是来自$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...我几乎没有想法。我根本无法在选择中显示任何数据。任何帮助将不胜感激!谢谢。

最佳答案

我认为这应该可行:

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

或者如果 getAdvertisers 返回一个 promise :

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

关于javascript - 异步 ngOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29134596/

相关文章:

javascript - 解析外部 JSON 文件

javascript - ajax图片上传到数据库

Javascript计时器如何用图像替换数字?

javascript - 如何防止亚洲字符按字断行

javascript - 使用angularJS将json模板编码为html的方法是什么?

javascript - Angularjs 中始终为真的测试失败——Karma

javascript - AngularJS 中的格式验证不正确

node.js - Nodejs简单的套接字连接不起作用

c# - 在 C# 中的单个调用中进行多个异步调用

javascript - Node.js/Express 异步函数