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