<section ng-app="app" ng-controller="ctrl">
<p ng-show="check && form.$invalid"></p>
<form name="form" ng-submit="init()">
<input type="text" ng-model="text" required/>
<!-- <input type="submit" ng-click="alterCheck()"/> -->
<input type="submit" ng-click="check=true"/>
</form>
</section>
angular.module('app', [])
.controller('ctrl', function($scope){
$scope.check = false;
$scope.init2 = function() {
$scope.text = '';
}
$scope.init = function() {
$scope.init2();
$scope.check = false;
}
$scope.alterCheck = function() {
$scope.check = true;
}
})
在實際專案中,使用ng-click="check=true"
的方法會造成點擊後p
處於顯示的狀態,而ng-click="alterCheck()"
則不會,請問這是什麼原因呢?
上述程式碼無法復現我所說的現象。有什麼額外的原因可能造成這現象嗎?
我在這個例子裡可以重現類似你描述的問題(因為之前遇到過,所以多看了幾眼):
如果運行目前的程式碼,會發現,
{{ checkIndex }}
壓根沒有變化,無論你怎麼使勁點,戳破滑鼠也沒用但如果
template
換成我註解掉的那部分程式碼,改用changeCheckIndex
方法,template
换成我注释掉的那部分代码,改用changeCheckIndex
方法,{{ checkIndex }}
就改變了。那麼問題來了,如何造成這個局面的?我們還是要回到文檔去(最近發現
ng
的文檔還是不錯的):文檔地址: ngRepeat
值的複製和物件的引用的差別,這個問題不好回答啊,重現不了錯誤,只能大概覺得。