Angularjs - 带子范围的控制器继承?

时间:2014-04-30 17:47:08

标签: angularjs inheritance

我试图在角度中实现多个控制器继承。

我已经设置了我在JSBIN中尝试实现的内容的简化演示。

我试图从一个控制器实现原型继承,并从另一个控制器创建子范围。在提供的示例中 - outputCtrl应该是父级或允许我装饰其中的一些功能。

我可以通过将控制器嵌套在DOM中来实现这一点

<div ng-controler='parentCtrl'>
  <div ng-controler='outputCtrl'>
    <div ng-controler='outputChildCtrl'>

并通过$scope.$parent.process_input进行装饰。问题是这种模式重复了几次,我试图将继承保留在代码中(而不是DOM)。

outputChildCtrl中的所需结果应启用:

  $scope.proccess_input = function() {
    // call outputCtrl.process_input here

    // continue processing in child ctrl
    $scope.result = $scope.processing_function($scope.result);
    console.log('outputChildCtrl processing ',$scope.result);
  };

修改

从评论中可以看出案件并不那么清楚。用例具有不同的表单控件。我有一个控制器处理输入字段(验证,格式化,设置等),输出字段(格式化,观察结果等) - 这些控制器中的每一个都是独立使用的。第三个字段是两个控制器的组合 - 输入和输出字段。输入的实现是相同的,因此原型继承就足够了,但输出需要在一个函数上进行一些组合 - jsbin中的proccess_input函数。我目前正在使用有角度的原型继承,如上面的示例HTML所示 - 这种方法的问题是

  • 每个输入输出字段都创建了三个范围 - 不必要。
  • 每当我想要使用这个字段时,我需要在DOM中用三个ng-controller div显式声明它 - 没有那么干。

我尝试将此行为移至代码而不是DOM,并保存两个范围。

希望这能澄清问题。

感谢。

0 个答案:

没有答案