我是Angular的初学者,我在Angular 1.5中遇到了这个简单的问题。我使用rootScope发出一些事件和$ scope。$ on作为组件控制器中的事件监听器(为子组件提供数据)。此控制器包含一些复杂对象,必须由传入的事件数据进行修改。 控制器看起来像这样(只是示例):
function ComponentController($scope){
this.abc = 5;
$scope.$on('BOOM!', function(events, args){
console.log(args);
this.abc = this.abc + args; // example of modifying some controllers data
})
}
问题很明显 - 我无法修改 this.abc 。那么如何在此事件监听器中访问控制器数据并对其进行修改?当我使用 $ scope.abc 时,它可以工作,但它是否有必要(当我在任何地方使用控制器时)?
答案 0 :(得分:0)
它应该解决你的问题
function ComponentController($scope){
var vm = this;
vm.abc = 5;
$scope.$on('BOOM!', function(events, args){
console.log(args);
vm.abc = vm.abc + args; // example of modifying some controllers data
})
}
答案 1 :(得分:0)
function ComponentController($scope){
//Assign this to that, this is in the scope/context of ComponentController.
var that = this.
that.abc = 5;
$scope.$on('BOOM!', function(events, args){
//the this used here earlier was in the scope/context of the function to handle this event
// therefore we use the that variable assigned in the ComponentController.
console.log(args);
that.abc = that.abc + args; // example of modifying some controllers data
})
}