使用 ng-controller 时如何让 ui-router resolve 工作?

How can I get ui-router resolve to work when using ng-controller?

在使用 ng-controller 时是否可以让 resolves 工作?我更喜欢使用 ng-controller,因为它允许我访问所有 1.6+ 生命周期钩子,例如 $onDestroy,我在状态对象上定义控制器时松开了它。

笨蛋: 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'];
        }
    }
});

实例化为 ui-路由器状态:

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.