我在第一个模块中有一个父控制器和一个"孩子"控制器在第二个模块内。第二个模块依赖于第一个模块。我想要我的孩子"控制器继承"父母"控制器。但问题是如何打电话给父母"控制器方法。
例如:
SecondModule.controller("childBrowseCtrl", function($scope, $injector, $controller){
$injector.invoke(ParentBrowseCtrl, this, {$scope:$scope});
//this overrides the onedit function from parent
$scope.onEdit = function(){
console.log("from edit console");
//how do i make this work?
ParentBrowseCtrl.$scope.onEdit();
};
});
html结构:
<html>
<head></head>
<body>
<div ng-view></div>
</body>
<script src="coreapp.js"></script>
<script src="mainapp.js"></script>
<script>
angular.bootstrap(document,["MainApp"]);
</script>
</html>
答案 0 :(得分:3)
这可能有效:
var parentOnEdit = $scope.onEdit;
$scope.onEdit = function() {
parentOnEdit();
};
答案 1 :(得分:0)
控制器通过原型链设置继承性,因此如果html中的控制器嵌套结构正确,那么子控制器将继承原型。
如果您
,可以查看此内容console.log($scope);
在子控制器中查看它们是否正确地从父级继承。
答案 2 :(得分:0)
你可以尝试:
$scope.$parent.onEdit();
关于范围的精彩文章:https://github.com/angular/angular.js/wiki/Understanding-Scopes
答案 3 :(得分:0)
这对我有用
// in parent
$scope.parentFnCall = $scope.functionName;
// in child
$scope.parentFnCall()