只有当$ scope数据发生变化时才更新DOM
问题描述:
在我的角度js应用程序中,我注意到DOM在任何时候调用函数都会更新。即使函数没有更改任何$ scope变量,也会发生这种情况。
我正在使用ng-repeat创建一组复选框,如下所示。
HTML
<a ng-click="someFunction()" >Some Function</a>
<form action="/settings/save">
<label>
<input ng-repeat="option in settings.active" name="options[]" value="{{option}}" checked="checked" />
{{option}}
</label>
<input type="submit" value="Save" />
</form>
JS
angular.module("myapp")
.controller("settingsCtrl", function($scope, $loadServ){
//$loadServ is a service for fetching data from the server
$loadServ("/settings/load")
.success(function(response){$scope.settings = response.data});
$scope.someVariable = "something";
$scope.someFunction = function(){
//There's nothing here yet
}
//More code follows
})
我注意到,当点击 “有些功能” 按钮时,所有未选中复选框被选中。我检查了DOM并意识到所有复选框都是在点击按钮时重新呈现的。
只有当$ scope改变时才有更新DOM的方法吗? 注意:我不能使用单向绑定,因为$ scope.settings.active可以通过一些其他函数进行更改
答
我找到了错误的来源。它是由一个过滤器引起的,这个过滤器远远高于节点
只有当你点击一个调用你的someFunction的按钮时,你才想要发生什么? –
你可以用你的测试创建一个plunker或jsbin吗?它看起来像是一个不受角度控制的DOM(在没有ng-app的情况下,或在没有ng-controller的情况下,在特定点) –
我不希望在调用someFunction时重新呈现我的DOM。这是因为someFunction不会更改$ scope。我不想失去复选框自定义只是因为一些其他无关的函数被调用 – elSama