0

Я начинаю на 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 вместо этого, он работает, но это необходимо (когда я использую везде controllerAs)?

ответ

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

Спасибо. оно работает. Проблема только в области (у слушателя событий есть собственная область с собственным этим)? Раньше я этого не думал. – chobotek

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 
    }) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^