내 문제는, 내가 지시 컨트롤러이며, 이 다른 컨트롤러에서이 컨트롤러를 호출하고프로그래밍 컨트롤러의 새로운 인스턴스를 생성 그래서 여기
function parentController($scope) {
$scope.numberOfChildren = $scope.numberOfChildren + 1 || 1;
console.log($scope.numberOfChildren);
$scope.someFunction = function(argument) {
// do stuff
$scope.someVariable = result of the function
}
}
가 호출 상위 제어기에서 일부 기능/변수를 내가 원하는 동일한보기
function firstChildController ($scope, $controller) {
var aVariable = 1;
$scope.otherVariable = 10;
$controller('parentController', {$scope: $scope});
$scope.someFunction(aVariable);
}
function secondChildController ($scope, $controller) {
var aVariable = 6;
$scope.otherVariable = 11;
$controller('parentController', {$scope: $scope});
$scope.someFunction(aVariable);
}
에서 두 아이의 부모 범위를 공유 할 수 없습니다. 은 지금, 하나의 부모 컨트롤러의 인스턴스가 그래서이 지시어는 같은보기에 따라 호출 할 때, 나는 내가 원하는 것은 일이 부모 컨트롤러가되는 $ scope.numberOfChildren의 ===를 얻을 수 각 자식 컨트롤러에서 $ scope.numberOfChildren === 1)
보기 템플릿에서 ng-controller를 사용하고 $ 컨트롤러 호출을 삭제하지만 프로그래밍 방식으로 수행하려고합니다. . (나는 지시어를 호출하고 같은 NG 컨트롤러 코드를 매번 작성해야하고 싶지 않아요).
<div ng-controller="parentController">
<first-directive></first-directive>
</div>
<div ng-controller="parentController">
<second-directive></second-directive>
</div>
마지막으로, 나는 오히려 가능하면 작업을 수행 할이와 VM 물건을 사용하지 않는 게 좋을 프로젝트의 코드에서 동질성을 유지합니다.
당신의 대답 알렉 주셔서 대단히 감사합니다. 사실, 지침은 호출 된 뷰에서 범위를 공유했다 난 그냥 그들에게 격리 된 범위 (범위 : {})를 첨부했다. 그리고 문제가 해결되었다. –
@ AloïsdeLaComble, 도움이 된 것을 기쁘게 생각합니다. –