2017-05-06 2 views
1

저는 Angular에서 초보자이며 질문이 있습니다.
각도가 뷰의 모든 범위 데이터를 업데이트한다는 사실을 알게되었습니다 (뷰에서 렌더링되는 하나의 변수 만 변경 되었더라도). 정상입니까? 보기에 대용량 데이터가 있고 데이터가 변경되는 경우에만 업데이트하고 싶습니다. 예

코드 (scope.word 펑션 FUNC가 실행되고 수정 될 때마다)

<div ng-app="myApp" ng-controller="myCtrl"> 
     Word: <input ng-model="word"> 
     {{func()}} 
    </div> 

    <script> 
     var app = angular.module('myApp', []); 
     app.controller('myCtrl', function($scope) { 
     $scope.word = "John Doe"; 
     $scope.func = function(){ 
     alert("Who dared to disturb me !? >("); 
     }; 
    }); 
    </script> 

답변

1

는 정상인가? - 당신은 그것이 정상적인 내기, 이것은 전체 아이디어입니다.

그러나 뷰에서 표현식으로 함수를 바인딩 할 때 각도가 뷰의 표현식을 업데이트해야하는 시점을 "알지 못하기"때문에 업데이트하는 것이 좋습니다. 그것이 일어나는 모든 다이제스트주기마다! 사용자가보기와 상호 작용할 때마다 (클릭, 스크롤) 또는 컨트롤러 측에서 변경된 사항이 거의있을 때마다 this error으로 끝날 수도 있습니다.

보기에 속성을 바인딩해야합니다 (). 기능이이 아닙니다. 예 : 당신이보기 에 속성을 바인드해야을 알고 경우

angular.module('app',[]).controller('ctrl', function($scope) { 
 
    $scope.welcomeMessage = "Hi, welcome to AngularJS!"; 
 
    
 
    $scope.updateMessage = function(message) { 
 
    $scope.welcomeMessage = message; 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
    <strong>{{ welcomeMessage }}</strong> 
 
    
 
    <hr> 
 
    
 
    
 
    <input type="text" ng-model="msg"> 
 
    <button ng-click="updateMessage(msg)">Update Message</button> 
 
</div>
한 번만
, 당신이 사용할 수있는 한 시간 바인딩 :

<strong>{{ ::welcomeMessage }}</strong> 

또는

<strong ng-bind="::welcomeMessage"></strong> 

표현식에 각도를 넣지 않으면이 표현식이 처음으로보기에 바인드 된 후 추적되지 않고 다시 업데이트하지 않고 컨트롤러의 이벤트가 변경됩니다. 앱의 실적을 극적으로 향상시킬 수 있습니다. 여기

일회성 바인딩의 작동 예입니다

내가 함께이 편집을하고있어 https://jsfiddle.net/hu9zcbwh/2/ (그것은이 미래 주먹 소개 된 각 1.3이 없기 때문에 내가 스택 조각을 만들 수 없습니다) 즉 더 명확 언급하고 바인딩 정상 사이에 더 나은 차이점을 요약하고 한 번 바인딩 @MaximShoustin :

ng-bind 또는 {{}} 한 감시자를 생성하고이를 각 소화주기 후 발사됩니다. 반면에, :: 표현은 감시자를 만들고 값이 undefined

죄송 아닌 영어를 모국어로 :(

+1

'NG-bind' 또는'{{}}'하나의 감시자를 생성하지 않습니다 일단 취소 IT 및 반면에'::'표현식은 와쳐를 생성하고 값이 '정의되지 않음'이되면 취소합니다. –

+0

@ MaximShoustin 감사합니다. –

관련 문제