【问题标题】:How can I get ui-router resolve to work when using ng-controller?使用 ng-controller 时如何让 ui-router 解析工作?
【发布时间】:2019-02-22 06:40:56
【问题描述】:

使用 ng-controller 时是否可以解决问题?我更喜欢使用 ng-controller,因为它允许我访问所有 1.6+ 生命周期钩子,例如 $onDestroy,我在状态 obj 上定义控制器时会松开这些钩子。

Plunker: https://plnkr.co/edit/2FJ0dGtFQtBtcQ0uVbTi?p=preview

在下面的示例中,“main”中加载的视图使 myData 可用于注入,但在 main2 中,控制器是使用 ng-controller 定义的,而 myData 不再可用于注入。

$stateProvider.state('home', {
    url: '/',
    views: {
        'main': {
            controller: 'MainCtrl',
            controllerAs: 'vm',
            templateUrl: 'main.html'
        },
        'main2': {
            templateUrl: 'main2.html'
        }
    },
    resolve: {
        myData: function() {
            return ['My', 'resolve', 'is', 'working'];
        }
    }
});

【问题讨论】:

    标签: angularjs angular-ui-router


    【解决方案1】:

    用 ui-router 状态实例化:

    app.controller('MainCtrl', function(myData) {
        console.log("MainCtrl")
        console.log(myData);
        console.log(this);
        this.message = myData.join(' ');
    });
    

    用 ng-controller 实例化:

    app.controller('MainCtrl2', function($scope) {
        console.log("MainCtrl2");
        console.log($scope);
        this.message = $scope.$resolve.myData.join(' ');
    });
    

    DEMO on PLNKR

    【讨论】:

    • 好的,所以 ui-router 使它在作用域而不是隔离作用域/控制器上可用
    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多