angularjs - 控制器继承调用parent

时间:2014-04-22 07:55:45

标签: javascript angularjs

我在第一个模块中有一个父控制器和一个"孩子"控制器在第二个模块内。第二个模块依赖于第一个模块。我想要我的孩子"控制器继承"父母"控制器。但问题是如何打电话给父母"控制器方法。

例如:

 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>

4 个答案:

答案 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()