2016-09-27 156 views
0

在我的角度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可以通过一些其他函数进行更改

+0

只有当你点击一个调用你的someFunction的按钮时,你才想要发生什么? –

+0

你可以用你的测试创建一个plunker或jsbin吗?它看起来像是一个不受角度控制的DOM(在没有ng-app的情况下,或在没有ng-controller的情况下,在特定点) –

+0

我不希望在调用someFunction时重新呈现我的DOM。这是因为someFunction不会更改$ scope。我不想失去复选框自定义只是因为一些其他无关的函数被调用 – elSama

回答

0

我找到了错误的来源。它是由一个过滤器引起的,这个过滤器远远高于节点

相关问题