2016-10-26 6 views
0

지시문 내에 익명 컨트롤러가 있습니다. 컨트롤러는 특정 이벤트가 발생하면 일반 대화 상자를 열고 ng-include를 통해 일반 대화 상자에 일부 버튼을 추가하는 데 사용되는 부분 템플릿을 제공합니다.각도 : ng-include를 통해 부분 템플릿의 호출 범위 기능이 포함되었습니다.

일반 대화 상자 내에서 사용자가 제공된 버튼 중 하나를 클릭하면 익명 컨트롤러의 특정 기능을 호출해야합니다. 이것이 어떻게 달성 될 수 있었는지에 대한 생각?

컨트롤러 :

angular.module('abc') 
.directive('xyz', [function() { 
    return { 
    restrict: 'E', 
    scope: {}, 
    controller: ['$scope', function($scope) { 
     $scope.callThisFunc = function(){}; 
    }] 
    } 
} 

부분 템플릿 :

<div> 
<button label="CANCEL" 
      ng-click="callThisFunc()"> 
</button> 
</div> 

일반 대화 상자 템플릿 (위의 ABC 모듈과 다른 모듈) : "controllerAs"를 사용하는

<div ng-include="partial"></div> 
+0

뷰에는 callThisFunc 메소드에 액세스하지 못하게됩니다. 지시어에 고립 된 스코프를 생성하는'scope : {}'가 지정되어 있기 때문입니다. 나는'scope'를'false'로 설정하려고하거나 컨트롤러 선언문 (지시어가 아님)을 가진 컨트롤러를 생성하려고합니다. – lascort

+0

고맙습니다. 여전히 함수를 호출하지 않는 범위를 false로 설정하려고했습니다. 나는 이것을 가지고 컨트롤러 선언을 바꾸는 것을 꺼려한다. 왜냐하면 그것은 내가 가지고있는 코드에서 많은 변화를 필요로 할 것이기 때문이다. 그러나 그것이 그걸 할 수있는 유일한 방법이라면, 나는 그 루트를 내려야 할 것이라고 생각한다. – AshD

+0

나는 ' 그것이 완전한 HTML 코드를 볼 수 없기 때문에 그것이 작동해야하는지 아닌지 확실하지 않습니다. 하지만 나는 당신이 지시어를 전혀 사용하지 않는 것 같아요. 당신이 바이올린에 당신의 코드를 얻을 수 있다면 나는 그것에 대해 살펴보고 기뻐할 것입니다. – lascort

답변

0

시도 구문

angular.module('abc') 
.directive('xyz', [function() { 
    return { 
    restrict: 'E', 
    scope: {}, 
    controller: function() { 
     var vm = this; 

     vm.callThisFunc = function(){}; 

     return vm; 
    }], 
    controllerAs: 'xyzCtrl' 
    } 
} 

부분 템플릿

<div> 
<button label="CANCEL" 
      ng-click="xyzCtrl.callThisFunc()"> 
</button> 
</div> 

일반적인 대화 상자 템플릿 난 당신이 당신이 실제로 어딘가에 지시어를 사용하고 거기에 지시어를 사용하지만 가정하는 이유 정말 모르겠어요

<div ng-include="partial" xyz></div> 
</div> 
+0

나는 당신이 제안한대로 그것을 사용하기 위해서'EA' 또는'A'를 제한해야한다고 생각한다. – lascort

+0

응답 해 주셔서 감사합니다. 나는 당신이 제안한 것을 시도했고, "xyzCtrl"내의 "callThisFunc"함수는 호출되지 않았다. 부분 템플릿의 범위가 일반 대화 상자 인 것처럼 보입니다. – AshD