繁体   English   中英

路由器ui“解决”不解决“返回deffered.promise”

[英]router ui “resolve” doesn't resolve “returned deffered.promise”

我有这个角度js代码:

app.js

        $stateProvider.state('home', {
            url: '/',
            component: 'homeComponent',
            params: {
                selectedFilter: undefined
            },
            resolve: {
                isAdOps: function (authorizationService) {
                    var ldapGroup = authorizationService.getLdapGroup();
                        //.then(
                    //     function(ldapGroup) {        return  ldapGroup === 'AdOps';},
                    //     function () { return true;}
                    // );

                    var isAdOps =  ldapGroup === 'AdOps';
                    console.log("isAdOps ?? "+isAdOps)
                    return isAdOps;
                }
            }
        })

和这个authorizationService:

    var getLdapGroup = function () {
        var deferred = $q.defer();
        if (self.isInit) {
            deferred.resolve(self.isAdOps);
            }
        else {
            $http.get('api/Voices/getLdapGroup').then(
            function successCallback(response) {
                    self.isAdOps = response.data === 'AdOps';
                deferred.resolve(response.data);

            }, function errorCallback(response) {
                    var error = !response.data ? "empty_error": response.data.errorMsg;
                    console.log(error);
                self.isAdOps = true;
                deferred.reject("data: "+response.data+" code:"+response.status+" "+response.statusText+", please look at the web console");
            });
        }
        return deferred.promise;
    };

这个家庭组件:

(function (app) {
    app.component('homeComponent', {
        templateUrl: 'partials/home-partial.html',
        bindings: {
            isAdOps: '<'
        },
        controller: ['$scope', '$state', function ($scope, $state) {

            var self = this;

            console.log("self.isAdOps = " + self.isAdOps);
            self.isFullList = false;

即使response.data === 'AdOps'

home组件绑定到isAdOps = false

我应该如何更改代码?

您必须将依赖项添加到控制器依赖项中已解析的项。

 controller: ['$scope', '$state', 'isAdOps', function ($scope, $state, isAdOps) {
...
}

这解决了我的问题:

resolve: {
                    isAdOps: function (authorizationService) {
                        return authorizationService.getLdapGroup();
                    }
                }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM