2016-09-27 3 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을 검사하여 버튼을 클릭 할 때 모든 체크 박스가 다시 렌더링되었음을 알게되었습니다.

$ 범위가 변경된 경우에만 DOM을 업데이트 할 수 있습니까? 참고 : $ scope.settings.active가 다른 함수에 의해 변경 될 수 있으므로 단방향 바인딩을 사용할 수 없습니다.

+0

someFunction을 호출하는 버튼을 클릭 할 때만 원하는 것이 있습니까? –

+0

테스트를 통해 plunker 또는 jsbin을 만들 수 있습니까? 각도에 의해 제어되지 않는 DOM 조각처럼 보입니다 (ng-app가 없거나 ng-controller가없는 경우) –

+0

someFunction을 호출 할 때 DOM을 다시 렌더링하지 않길 바랍니다. someFunction이 $ scope를 변경하지 않기 때문입니다. 그리고 다른 관련이없는 함수가 호출 되었기 때문에 체크 박스 사용자 정의를 잃고 싶지 않습니다. – elSama

답변

0

오류의 원인을 찾았습니다. 그것은 노드 위로 멀리 적용된 필터로 인해 발생했습니다.

관련 문제