【发布时间】:2015-07-28 07:44:23
【问题描述】:
此时我正在处理巨大的角度 SPA 应用程序。我尽量让我的控制器保持纤薄:
<div ng-controller='HomeController as home'>
<div ng-repeat='var item in home.items' ng-bind='item' ></div>
<button ng-click='home.remove(1)' >remove</button>
</div>
function HomeController (homeService){
var vm = this; //$scope
vm.items = [1,2,3,4,5];
vm.remove = remove;
function remove (id){
homeService.remove({ items: vm.items, targetId: id });
}
//a lot of other logic here
}
angular.module('my').service('homeService', homeService);
function homeService (){
this.remove = remove;
function remove (param){
for(var a = 0; a < param.items.length; a++){
if(param.items[a] == param.targetId){
param.items.splice(a, 1);
break;
}
}
}
}
优点:
- 逻辑在控制器之外
缺点:
- 服务更改范围状态
您有什么方法可以让控制器保持精简?
【问题讨论】:
-
“服务变更范围状态”是什么意思?
-
@DmitriZaitsev,我编辑了我的代码,我只想说,在服务中更改了 var 项,此更改将影响 ui。
-
服务不应该知道 ui!
-
是的,这是主要问题。请问,你是如何在你的控制器中组织代码的,或者有什么建议可以改进上面的代码吗?
-
我建议将代码发布到codereview.stackexchange.com 以获得深入的建议
标签: angularjs model-view-controller