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가 다른 함수에 의해 변경 될 수 있으므로 단방향 바인딩을 사용할 수 없습니다.
someFunction을 호출하는 버튼을 클릭 할 때만 원하는 것이 있습니까? –
테스트를 통해 plunker 또는 jsbin을 만들 수 있습니까? 각도에 의해 제어되지 않는 DOM 조각처럼 보입니다 (ng-app가 없거나 ng-controller가없는 경우) –
someFunction을 호출 할 때 DOM을 다시 렌더링하지 않길 바랍니다. someFunction이 $ scope를 변경하지 않기 때문입니다. 그리고 다른 관련이없는 함수가 호출 되었기 때문에 체크 박스 사용자 정의를 잃고 싶지 않습니다. – elSama