AngularJS指定一个控制器依赖于另一个控制器的方式

时间:2014-03-27 23:10:51

标签: javascript angularjs

我有一个场景,我有一个父控制器和多个子控制器,它们可以基于某些业务逻辑存在于页面上。

控制器在dom中的元素上指定,子控制器在由ngSwitch控制的元素上。

e.g。这是我正在做的一个相当人为的例子。

家长控制器

app.controller('parentCntrl',function($scope){
        $scope.model = {};
        $scope.model.foo = 42;
        //More stuff
});

儿童控制器

app.controller('childCntrl',function($scope){
     $scope.model.bar = 24;
     $scope.myFunction = function() {
        return "The answer is: " + $scope.model.foo;
     };
});

如您所见,子控制器依赖于已存在的$scope.model对象,并依赖于遍历原型链来查找它。

有没有办法在子控制器上指定它们需要特定的父控制器才能使它们工作?我的子控制器需要查看父作用域上的属性。或者我应该遵循某种其他最佳做法?

由于

1 个答案:

答案 0 :(得分:1)

最好的方法是在两个控制器服务的外部中继,这可以让您在这些控制器之间进行有效通信,以及$scope.model可以很好地安全地保存。

例如:

yourapp.factory('myextprovider', function(){
  // Your code where to updare the $scope.model
})

yourapp.controller('parentctrl', function(myextprovider, $scope){
  $scope.model = myextprovider.somemethods
})
yourapp.controller('childctrl', function(myextprovider, $scope){
  $scope.model = myextprovider.othermethods
})

另一种方法是,根据使用指令的情况,您可以有效地要求子指令的外部父指令,并共享范围。

我希望我能告诉你如何处理像他们这样的案件。