2016-09-27 75 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

我找到了錯誤的來源。它是由一個過濾器引起的,這個過濾器遠遠高於節點

相關問題