使用 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(' ');
});
在使用 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(' ');
});