我有几个控制器有一些重复的代码直接作用于控制器对象(this)。看起来大致如下:
geekApp.controller( 'ReviewsCtrl',
[ 'moduleLoader', function ( moduleLoader ) {
// controller specific code removed, above
// the stuff below here is essentially duplicated in a few controllers
that = this;
this.loader = [];
this.getModule = function () {
var loaderPromise = moduleLoader.getModule( this.url, this.params );
//add loader promise to this so I can pass it to angular-busy in the template
this.loader = loaderPromise;
loaderPromise.success( function ( data ) {
that.data = data;
} );
};
this.getModule();
} ] );
大多数共享代码已移至模块加载器,但仍然存在大量重复。但基本上所有重复的代码都直接修改了控制器,所以除了将this
传递给服务之外,我通常的方法是将代码卸载到服务中,但实际上并没有工作,我知道这很糟糕实践。
我可以使用angular.extend
来创建一个具有此功能的基本控制器,但我觉得应该有更好的方法。
"角度方式"是什么?对这段代码进行重复数据删除吗?