$watch в переменной intanciada с controllerAs

Как делание $watch в переменную, созданную начиная с инстанции моего controller используя нотацию controllerAs например

var vm = this;

vm.myVariable = [];

$scope.$watch('vm.myVariable',function(newValue){
  console.log(newValue);
});

это у меня есть таким образом, но я не получаю желанный результат: Какая-то помощь?

1
задан 08.04.2016, 01:18
1 ответ

Когда используется структура "controllerAs", драйвер añega с именем установился scope здесь.

Самое вероятное состоит в том, чтобы с тобой случилось, что он говорит devconcept в одном из комментариев, а именно, что во время объявления имени драйвера ты распределил ему отличное имя в vm.

Например:

<div ng-controller="MyCtrl as viewModel">
  Hello, {{viewModel.name}}!
</div> 

function MyCtrl($scope) {
  var vm = this;
  vm.name = 'Superhero';
  ...
}

Когда используется структура "controllerAs", нужно избегать делать $scope.$watch используя выражение, чтобы так не зависеть от имени, которое распределяется в драйвер с вида.

Способ это делать был бы этим:

$scope.$watch(function(scope){
    return vm.name;
}, function(newValue, oldValue){
    console.log('New name: ' + newValue);
});

Ты можешь видеть полный пример в этом JSFiddle и в этой статье на английском будь объяснен более подробно.

1
ответ дан 24.11.2019, 14:37