【问题标题】:angular - stop two way binding or local value角度 - 停止双向绑定或本地值
【发布时间】:2017-07-11 06:28:46
【问题描述】:

我不想自动将 javascript 本地值绑定到 $scope 函数,但 angular 做到了。

javascript 代码

    var startat = true;
    $scope.chagneStart = function() { startat = !startat}
    $scope.isStart = function() { return angular.copy( startat); }

html代码

<checkbox ng-click="chagneStartAt()">
<tr ng-show="isStartAt()"> ... </tr>

当我点击复选框时,是否显示 tr 标签取决于 起始值。我想在调用其他函数之前不更改 tr 标签,例如 applyOption()。

【问题讨论】:

  • 你的问题我不清楚:)
  • 也提供您的 html 代码。
  • 抱歉问题不清楚。我添加了一些 html 代码。

标签: javascript angularjs


【解决方案1】:

问题是您在 &lt;tr&gt;&lt;/tr&gt; 标签 (ng-show="isStartAt()") 中调用函数,这在此处不正确。

实际上,发生了什么,它反复调用该函数。您可以通过在名为 isStartAt() 的函数中保留 console.log('') 来检查这一点。

所以当你点击复选框时,函数 chagneStart() 会被调用。它会更新 var startat 的值。并且因为你的标签函数isStartAt()是重复调用的,所以它也会返回startat的更新值。

所以只需用下面的代码替换您的代码。

控制器

 var startat = true;
 $scope.chagneStart = function() { startat = !startat}
 $scope.isStart = angular.copy(startat);

HTML

<checkbox ng-click="chagneStartAt()">
<tr ng-show="isStartAt"> ... </t

【讨论】:

    【解决方案2】:

    在这种情况下,您应该有oldStartat 变量:

    Javascript:

    var startat, oldStartat = true;    
    $scope.chagneStart = function() { startat = !startat}
    $scope.applyOption = function() { oldStartat = startat; }
    

    HTML:

    <checkbox ng-click="chagneStart()">
    <tr ng-show="oldStartat">...</tr>
    <input type='button' ng-click='applyOption()' value='Apply'>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-20
      • 2013-02-14
      • 1970-01-01
      • 2018-06-19
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      相关资源
      最近更新 更多