父母和孩子控制器
有两个控制器,父母和孩子。
<div ng-controller="firstCtrl as first">
<div ng-controller="secondCtrl as second"></div>
</div>
JS:
app.controller('firstCtrl', function() {
this.func = function() {
//some code
};
});
app.controller('secondCtrl', function() {
this.parent.func(some_data);//thats what I need to do
});
是否有可能在不使用工厂或$scope.$parent
情况下执行此操作$scope.$parent
?
是否有可能做到这一点,而不使用工厂或$ scope。$ parent?
不,你不能。
作为一个方面说明,我不太喜欢使用$scope.$parent
。 在一个大的应用程序中,你可以通过重叠这些东西来控制你的应用程序。
如果你想在控制器之间共享一个功能,你可能需要改用一个service
。
将$ scope注入到父控制器和子控制器中,并将父级方法保存到$ scope中,如下所示:
家长:
app.controller('firstCtrl','$scope',function(){
$scope.yourFunctionName = function(some_data){
//some code
};
});
并在孩子身上做如下调用父母控制器的方法:
儿童
app.controller('secondCtrl', '$scope',function(){
$scope.yourFunctionName(some_data);//thats what I need to do
};
});
虽然如前所述,服务/工厂在这里可能会更好,但如果你想要另一个选项,你可以使用组件。 例:
angular.module('app')
.component('parent', {
controller: function() {
var $ctrl = this;
$ctrl.doStuff = function() {};
},
templateUrl: '/view.html'
});
angular.module('app')
.component('child', {
require: {
parent: '^parent'
},
controller: function() {
var $ctrl = this;
$ctrl.$onInit() = function() {
$ctrl.parent.doStuff();
};
},
templateUrl: '/view.html'
});
添加父组件,然后在$ onInit函数中,您将有权访问其上的任何数据/方法。 希望有所帮助。
链接地址: http://www.djcxy.com/p/77565.html