Как посмотреть переменную в области видимости контроллера, который использует несколько имен в Angular

0

Все:

Интересно, использую ли я контроллер в шаблоне с "as", но даю ему разные псевдонимы в разных местах, интересно, как я могу его посмотреть?

Подобно:

app.controller("main", function(){
this.name = "hello";
})

И шаблон выглядит так:

<div ng-controller="main as m1">
{{m1.name}}
</div>
<div ng-controller="main as m2">
{{m2.name}}
</div>
<div ng-controller="main as m3">
{{m3.name}}
</div>

Интересно, что я должен использовать для наблюдения?

$scope.$watch("m1.name", function(){});
$scope.$watch("m2.name", function(){});
$scope.$watch("m3.name", function(){});
  • 1
    куда вы хотите поместить этот код? В самом контроллере? Почему бы не использовать var that = this; $scope.$watch(function() { return that.name; }, ...);
  • 0
    @JBNizet Спасибо, теперь это работает, поэтому, если я использую функцию, возвращаемое значение будет фактически сравниваемым, в то время как если я использую строку, она сначала найдет фактическое значение переменной, соответствующее этой строке, и сравнит?
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Используйте функцию часов:

app.controller("main", function($scope){
     this.name = "hello";
     var vm = this;
     function watchFn() {
         return vm.name;
     });
     $scope.$watch(watchFn, function(newValue) {
         console.log("name="+newValue);
     }); 
})
  • 0
    Спасибо, это работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню