如果你想在推荐的“控制器作为”时尚中使用控制器?
让我们跳过这一部分扩展控制器是一个不好的做法,我仍然认为有些情况下这是合理和有用的。
一直在努力在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);
拜托,我需要你对这个解决方案的可能缺陷提出意见,建议如何做出更好的替代方法。谢谢。