【问题标题】:watch is bad so how to change this手表坏了怎么改
【发布时间】:2016-06-18 14:51:38
【问题描述】:

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

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

我需要做什么来重构它?

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

还有

我的代码运行良好。我感兴趣的是如何在不使用 $watch 的情况下观看

【问题讨论】:

  • 什么是tilda?重构的第一步是删除? true : false
  • $scope.isTilda = function() { return tilda; }? valueToShow 完全取决于 tilda 的值,那么看 'mysevice.function()' 有什么意义呢?
  • 重点是我想在网站上自动推送。
  • 我将根据真假显示一个 div...我不希望他们刷新页面...isTilda 可以在后台随时更改

标签: angularjs angularjs-directive angularjs-scope


【解决方案1】:

首先要注意函数中未声明的变量 tilda。

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

然后,当您执行 $scope.valueToShow = tilda 时,这是一种矫揉造作,它始终是正确的,并且变量 $scope.valueToShow 变得等于 tilda。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我的代码运行良好。我感兴趣的是如何在不使用 $watch 的情况下观看
    • setTilda() 概念。对你的应用在做什么真的不够了解
    • 对不起?我对 Angular 很陌生……你能解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2011-02-27
    相关资源
    最近更新 更多