angular:如何在不使用$ scope的情况下扩展控制器?

时间:2014-11-25 08:49:13

标签: angularjs controller scope extend

如果你想在推荐的“控制器作为”时尚中使用控制器?

让我们跳过这一部分扩展控制器是一个不好的做法,我仍然认为有些情况下这是合理和有用的。

一直在努力在angularjs中扩展控制器一段时间,想出与此处相同的内容:Angular: Extending controller 我最喜欢的选择。我们仍然有一个父作为angularjs控制器,它在控制器继承中有意义,即它不是一个带有$ scope的服务,它不是一种最不可能的原型,它不是一个普通的js函数/对象 - 它是angularjs控制器我们想在angularjs控制器中扩展。

现在这个解决方案的问题是:如果我们想在推荐的“控制器”方式中使用它而不显示$ scope会怎么样?我在网上找不到任何东西,试图自己制作:

// @ngInject
function ParentCtrl(Service, CommonService) {
  var vm = this;

  //...

  // could be moved out to abstract extendable
  vm.extendTo = function(child) {
    // we need this reassignment to new vm reference,
    // to use overriden/child members in common/parent methods.
    vm = angular.extend(child, vm);
    return vm;
  };
}
angular.module('common').controller('ParentCtrl', ParentCtrl);

// @ngInject
function ChildCtrl($controller, SpecificService) {
  var vm = $controller('ParentCtrl', {Service: SpecificService}).extendTo(this);
}
angular.module('child').controller('ChildCtrl', ChildCtrl);

拜托,我需要你对这个解决方案的可能缺陷提出意见,建议如何做出更好的替代方法。谢谢。

0 个答案:

没有答案