因此,这里是我的问题,我有一些函数/变量在父控制器编程方式创建一个控制器的新实例
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 === 2. 我想要的是这个父控制器是加载两次,但有分开的范围($ scope.numberOfChildren === 1在每个子控制器)
我设法做到这一点在视图模板中使用ng控制器和删除$控制器调用,但我想以编程方式。 (我不想每次调用指令时都要写相同的ng-controller代码)。
<div ng-controller="parentController">
<first-directive></first-directive>
</div>
<div ng-controller="parentController">
<second-directive></second-directive>
</div>
最后,以保持同质化项目的代码,我宁可不使用这个和VM的东西,如果有可能做的工作。
非常感谢你的回答亚历克。事实上,指令分享范围从他们被称为英寸 我只需要附加他们一个孤立的范围(范围:{}),问题解决了。 –
@AloïsdeLaComble,我很高兴它有帮助。 –