【发布时间】:2013-08-29 22:54:09
【问题描述】:
在模块内,控制器可以从外部控制器继承属性:
var app = angular.module('angularjs-starter', []);
var ParentCtrl = function ($scope, $location) {
};
app.controller('ChildCtrl', function($scope, $injector) {
$injector.invoke(ParentCtrl, this, {$scope: $scope});
});
示例来自:死链接:http://blog.omkarpatil.com/2013/02/controller-inheritance-in-angularjs.html
模块内的控制器也可以从兄弟继承吗?
var app = angular.module('angularjs-starter', []);
app.controller('ParentCtrl ', function($scope) {
//I'm the sibling, but want to act as parent
});
app.controller('ChildCtrl', function($scope, $injector) {
$injector.invoke(ParentCtrl, this, {$scope: $scope}); //This does not work
});
第二个代码不起作用,因为$injector.invoke 需要一个函数作为第一个参数并且找不到对ParentCtrl 的引用。
【问题讨论】:
-
aside:这看起来不像继承,更像是共享方法或注入。也许只是语义。
-
该示例的链接不再有效。
-
Google 缓存链接:webcache.googleusercontent.com/… 指向这个有趣的 Fiddle:jsfiddle.net/mhevery/u6s88/12
标签: angularjs inheritance angularjs-controller