2013-04-19 4 views
0

다음 동작을 구현하려고합니다. 나는 뭔가를하고있는 ng-inculde 템플릿을 포함하고 있습니다 : {{something}}부모 컨트롤러를 참조하는 AngularJS

'something'은 부모 컨트롤러의 범위에있는 다른 변수와 이중 바인딩을 사용하고 싶습니다. 상위 컨트롤러 범위의 속성 이름을 설정하는 기능. 그래서 하나의 포함에, 어떤 것은 사과를 참조 할 것이고 다른 것은 포함 할 것이고, 어떤 것은 오렌지를 참조 할 것입니다.

제가하는 일은 lookAt(v) 메서드를 가진 사용자 정의 컨트롤러를 작성했으며 ng-include와 ng-controller를 사용하는 div의 ng-init에서이 메서드를 호출하는 것입니다. 이 방법에서는 바인딩을 설정하려고하지만 작동하지 않습니다. 그 부모 범위에는 이미 해당 변수가 정의되어 있다고 가정합니다. 이 문제를 해결하는 방법에 대한 제안을

mod.controller('FooController', ['$scope', function($scope) { 
    $scope.lookAt = function (variable) { 
     $scope.something=$scope[variable]; 
    } 
}]); 

감사 :

여기 내 코드입니다.

+0

jsfiddle을 제공 할 수 있습니까? 내가 너를 올바르게 이해한다면 옵서버 패턴을 구현하고 싶다. AngularJS에서는 $ watch를 사용할 수 있습니다. – tschiela

답변

0

{{something}} 대신 {{something}} 대신 something 메서드가 부모 컨트롤러에 정의되어있는 ng-include를 사용하여 템플릿을 가져 왔습니다.

당신은 여전히 ​​당신이 원하는 경우 변수 이름을 init을 할 수 있습니다 구문으로 컨트롤러를 사용하는 경우

mod.controller('FooController', ['$scope', function($scope) { 
    $scope.initMethod = function(variable) { 
     $scope.variable = variable; 
    } 
    $scope.something = function() { 
     return $scope[$scope.variable]; 
    } 
}]); 
0

당신은 단지 소비자에 (자식에 대한 생성자를) $scope.$parent을 할 수없는 상위의 데이터 -를 해결해야 같은 대상 : $scope.$parent.vmParent.

관련 문제