angular - 停止双向绑定或本地值

时间:2017-07-11 06:28:47

标签: javascript angularjs

我想不自动将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()。

2 个答案:

答案 0 :(得分:1)

在这种情况下,你应该有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'>

答案 1 :(得分:1)

问题是你在<tr></tr>标签内调用了这个功能( 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