我正在尝试在rootScope事件中使用我工厂的字段,但它似乎不起作用:
ngModule.factory('MyFact', ['$rootScope', function ($rootScope) {
function MyFact(opts) {
this.blah= opts.blah;
}
$rootScope.$on('$stateChangeStart', function() {
alert('This is my directive listening stateChangeStart' + this.blah);
});
return MyFact;
}]);
显示的内容是:'这是我的指令监听stateChangeStartundefined'。
为什么我不能这样做?
答案 0 :(得分:1)
this.blah
超出了范围。
this.blah
中的$rootScope.$on
无法看到它在更大范围内可用,因此您的功能可以看到它。
答案 1 :(得分:1)
您必须使用私人var
才能在$rootScope.$on function
中访问它,因为它已脱离了上下文:
ngModule.factory('MyFact', ['$rootScope', function ($rootScope) {
var _blah;
function MyFact(opts) {
_blah= opts.blah;
};
$rootScope.$on('$stateChangeStart', function() {
alert('This is my directive listening stateChangeStart' + _blah);
});
return MyFact;
}]);