大多数棱角分明的新款"款式"使用命名构造函数替换匿名控制器函数的指南,因为这是正确的角度方式(模式),即使早期文档不符合。
E.g:
var testCtrl = function(){
this.prop = 'Prop';
....
}
angular.module('app').controller('test', testCtrl);
为了调试能力和节省内存,我能理解这个概念。
我的问题:
如果之前您可以通过订阅$scope.$on()
方法收听活动:
angular.module( 'app' ).controller( 'test', [ '$scope', function ( $scope ) {
$scope.$on('event', function (event, params) {
...
});
}]);
你怎么能在构造函数中做到这一点?
还有一个问题!在构造函数中注入$ scope并在$ scope上订阅事件将不会在构造函数范围内执行回调。
答案 0 :(得分:0)
实际上,没有一个示例具有命名构造函数,它们只是注册控制器的不同样式。
为了两种样式的调试能力,您可以使用命名的构造函数,如下所示:
function testCtrl() {
this.prop = 'Prop';
....
}
angular.module('app').controller('test', testCtrl);
或者这个:
angular.module( 'app' ).controller( 'test', [ '$scope', function testCtrl( $scope ) {
$scope.$on('event', function (event, params) {
...
});
}]);
要订阅第一种风格的活动,您可以这样做:
function testCtrl($scope) {
this.prop = 'Prop';
$scope.$on('event', function (event, params) {
...
});
}
angular.module('app').controller('test', ['$scope', testCtrl]);
希望这有帮助。