手表坏了所以如何改变这一点

时间:2016-06-18 14:51:38

标签: angularjs angularjs-directive angularjs-scope

我在角度使用手表,据说不应该使用手表。我使用以下代码

  $scope.$watch('mysevice.function()', function(tilda) {
      $scope.valueToShow = tilda ? true : false ;
    });

我需要做什么才能重构?

EDITED 抱歉编辑问题 函数(蒂尔达)......

另外

我的代码工作正常。我感兴趣的是如何在不使用$ watch的情况下观看

2 个答案:

答案 0 :(得分:0)

首先要小心你的函数中显示为未声明的变量tilda。

也许您在某处影响$ scope.tilda或执行全局变量,但它是您代码中的第一个问题。

然后,当你$scope.valueToShow = tilda做出一个影响时,它就是真的,变量$ scope.valueToShow变得等于tilda。

 $scope.$watch('mysevice.function()', function(online) {
      $scope.valueToShow == tilda ? true : false ;
    });

答案 1 :(得分:0)

如果要观察变量,则需要使用函数作为第一个参数并返回该变量。

  var tilda;// be sure to declare variable
  $scope.$watch(function() {
     return tilda;
  }, function(){
       $scope.valueToShow = tilda ? true : false ;
  });

也许更好的方法是使用函数来更改tilda,并在该函数中也设置$scope.valueToShow

function setTilda(value){
    tilda = value;
    $scope.valueToShow = tilda;
}