2017-01-11 5 views
0

저는 항상 서버에서 데이터를 가져와 테이블, 차트 또는 다른 어떤 것에 표시하기 위해 항상 ng-init="controllerFunction()"을 사용하고 있으며 모든 페이지로드시 호출되어야합니다.angularJs로 범위 변수 초기화

지금은 ng-init을 사용하고 있지만 최선의 방법입니까?

답변

1

ng-init은 데이터를 초기화 메소드에 전달하는 데 주로 사용됩니다 (예 : 면도기 데이터 (ng-init="someControllerFunction(@Model.ServerSideData))). 당신이 어떤 데이터를 전달하지 않으면 당신은 당신의 컨트롤러에서 직접 작업을 수행 할 수 있습니다

function myCtrl($scope) { 
    function myInitFunction(){ 
     // fetch data etc. 
    } 

    myInitFunction(); 
} 

이 방법 당신은 init 함수를 노출하지 않고 잘 컨트롤러 내부에 캡슐화된다.

+0

그래, 그렇다 그렇지만 특정보기에서 기능을 초기화하고 다른 기능을 사용하지 않으려면 추가 작업없이'ng-init'이 제공하는 것 이상을 수행해야합니다. –

0

The documentation 명확하게 ngInit 불과 몇 집중 사용 사례를 가지고 있으며,이 지시어는 불필요한 금액을 추가하기 위해 악용 될 수

이러한 시나리오의 외부에서 사용되어서는 안된다는 (큰 빨간 경고에) 상태 로직을 템플릿에 추가하십시오. 아래의 데모 에서 볼 수 있듯이 ngRepeat의 별칭 지정 특수 속성과 마찬가지로 ngInit을 적절한 용도로 사용하는 사람이 몇 명 있습니다 (예 : ). 서버 측 스크립팅을 통해 데이터를 주입하는 데 사용됩니다. 몇 가지 경우 외에 ngInit 대신 컨트롤러를 사용하여 범위의 값을 초기화해야합니다.

+0

그러면 페이지로드시 데이터를 호출하는 가장 좋은 방법을 제안 할 수 있습니다. –