2016-11-25 2 views
0

나는 이것을 처리 할 수 ​​있으면 좋겠지 만, 나쁜 방법으로 ... 즉, $cookieStore을 사용하여 호출 된 함수를 점검해야한다.anglejs 컨트롤러가 DOM에 정의 된 많은 ng 컨트롤러조차 한 번만 실행하게하려면 어떻게해야합니까?

push 배열을 사용할 때마다 $cookieStore을 사용해야합니다. 그러나 실용적이지는 않습니다.

<div ng-controller="MyCtrl"> 
    <div> 
    <div ng-include="'temp2.html'"> 
    Hello, {{name}}! 
    </div> 
    </div> 
</div> 

<script type="text/ng-template" id="temp2.html"> 
    <div ng-controller="MyCtrl">Another View</div> 
</script> 

그리고 내 AngularJS와 컨트롤러 :

var myApp = angular.module('myApp',[]); 

//myApp.directive('myDirective', function() {}); 
//myApp.factory('myService', function() {}); 

function MyCtrl($scope) { 
    $scope.name = 'Superhero'; 
    alert(1); 
} 

alert(1) 함수가 호출됩니다 2 번 페이지가 호출 된 모든 시간

은 여기 내 DOM이었다.

감시자를 사용하지 않고이 문제를 방지하려면 어떻게해야합니까?

귀하의 편의를 위해 내 fiddle. 감사!

+0

동일한 컨트롤러를 두 번 사용하므로 두 div에 대해 두 번 인스턴스를 생성합니다. 어떻게 사용하고 있습니까? – Viplock

+0

컨트롤러가 내 ng-include의보기를 이해할 수 없기 때문에 두 번 호출해야합니다. – Nere

+0

아니, 당신의보기는 어떤 컨트롤러를 따라야하는지 이해할 수 있습니다. – Viplock

답변

0

컨트롤러 내가 당신을 init 기능에 controller 특정 코드를 이동하고 views 중 하나에 ng-init를 사용하는 것이 좋습니다 것, 모두보기에 두 번 일이라는 것입니다.

var Controller = function($scope) { 
    $scope.init = function() { 
    }; 
}; 

보기

<div ng-controller="Controller" ng-init="init()"/> 
+0

좋아 .. 먼저 해보고 싶다. 응답 해 주셔서 감사합니다. – Nere

+1

@Imran : cool .. 당신의 관점 중 하나에서 ng-init을 사용할 수 있고, 다른 방법으로는 피할 수 있습니다. 이것을 유지함으로써 일부 코드가 사용자의보기 중 하나에서 초기화되지 않도록 할 수 있습니다. – Thalaivar

+0

코드를 구현하는 방법은 무엇입니까? 나는 그것을 어떻게 사용하는지 모른다. 이 바이올린에 나를 보여 주실 수 있습니까? http://jsfiddle.net/imranhamzah/Lvc0u55v/12581/ – Nere

0

요는 다시 컨트롤러 이름을 지정할 필요가 없습니다 포함 .... 경우는 부모와 같은 하나 (같은 메인 페이지의 컨트롤러로) .

그냥 당신이 포함 된보기에 액세스 할 수 있습니다이

<div ng-controller="MyCtrl"> 
    <div> 
    <div ng-include="'temp2.html'"> 
    Hello, {{name}}! 
    </div> 
    </div> 
</div> 

<script type="text/ng-template" id="temp2.html"> 
    <div>Another View {{name}}</div> 
</script> 

Js Fiddel

이름과 함께 할 것입니다.

호프가 도움이 될 것입니다 ..