0

我不知道如何在 angularjs 中查看绑定到该变量的变量。

这是我尝试过的。

在 html 中,

<input type="text" ng-model="vm.text"/>--{{vm.text}}--
    <p>{{vm.count}} times changed</p>
    <input type="text" ng-model="text1"/>--{{text1}}--
    <p>{{count1}} times changed</p>

在 app.js 中

$scope.$watch('this.text', function() {
    console.log('watch 1');
    this.count=this.count+1;
});

$scope.$watch('text1', function() {
// do something here
   console.log('watch 2');
   $scope.count1=$scope.count1+1;
});

和 plunker链接相同。

我可以看text1,但我不能看text1。

谁能解释一下如何观看text1?

提前致谢

4

3 回答 3

3

您需要首先使用将this上下文绑定到角度$scopeangular.bind

$scope.$watch(angular.bind(this, function () {
  return this.text;
}), function (newVal) {
  console.log('watch 1');
  this.count=this.count+1;
});

或者在 watcher 中放置一个函数而不是 string & ,它将在每个摘要循环中进行评估

$scope.$watch(function () {
   return vm.text;
},function(value){
   console.log('watch 1');
   this.count=this.count+1;
});
于 2015-12-08T20:10:48.527 回答
1

你需要关注vm.text

http://plnkr.co/edit/ctDjs0dwe50kMu61TfCW?p=preview

$scope.$watch('vm.text', function() {
       console.log('watch 1');
             this.count=this.count+1;

   });
于 2015-12-08T20:14:30.960 回答
0

您在这里有一些单独的问题。

您正在使用 $scope.watch 和控制器作为语法。这不是一个简单的文本,这里有一个很好的文本:

http://www.bennadel.com/blog/2852-understanding-how-to-use-scope-watch-with-controller-as-in-angularjs.htm

这是我的你的 plunker 的叉子:

http://plnkr.co/edit/ctDjs0dwe50kMu61TfCW?p=preview

我所做的是:

/*make this (controller) callable 
 *from inside my watch function, 
 *so I can observe it and count can change
 */
var vm = this; 

//vm is observable as it is assigned
$scope.$watch(function (scope) {return vm.text;}, 


function() {
   console.log('watch 1');
  //count can change, as the controller is assigned to variable
   vm.count=vm.count+1;       
});

这是一个有趣的情况,在这种情况下,范围不仅可以通过使 watch 可以顺利调用,而且还可以通过内部 watch 函数 ($scope.watch) 轻松引用来提供帮助。

于 2015-12-08T20:45:24.240 回答