簡體   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