我写了一个应用程序,它是多个项目的骨架。所以我编写了用我的模板中最小变量和回调填充范围的控制器。多个项目将使用此代码库并通过扩展我的控制器和我的模板来创建他们自己的应用程序。他们希望在某些控制器中向范围添加新的变量或新的回调。我需要找到一个简单的方法让他们在不改变我的模块的情况下做到这一点。可扩展角度控制器
所以我们可以说我有一个非常简单的控制器:
angular.module('controller-a').controller('a', function($scope) {
$scope.foo = 'bar';
});
而这个控制器通过基本的路由进行访问,如:
$routeProvider.
when('/a', {
templateUrl: 'partials/a.html',
controller: 'a'
}).
而且一个希望将新值添加到像范围$scope.baz = 'klux';
)。如何执行该操作? 是否有可能更改a
以避免重新定义路由或必须为此完全创建另一个控制器?
我不是在标准使用情况下我有一个控制器,其功能在同一个应用程序通过多个的需要。每个控制器将被覆盖一次或没有,就是这样。
最接近什么看我想要的是:
angular.module('controller-b', []).controller('b', function($scope) {
var original = $controller('a');
original($scope);
$scope.foo = 'bar';
});
但后来我需要改变使用B的替代路由,有没有什么办法在地方更新?
“扩展'a'控制器的内容而不更改代码”。那么,控制器的目的是什么? – Dalorzo
初始控制器提供了常见的多个项目的一些基本功能,然后多个项目希望,而无需更改/复制的初始代码(在实践中多了很多代码)以自己的方式来改变范围 – jolivier
@joliver即所谓的服务,工厂。关于这种类型的问题和解决方案,软件模式是明确的 – Dalorzo