带有typescript的Angular js-数据应该存储在控制器或服务中吗
Angular-js with typescript - should data be stored in controllers or services?
我开发了一个web api服务器,最近也开始开发客户端,它是用Angular js和typescript开发的。
关于客户端代码的设计,我有一些不确定的地方。
比如说,我有一个显示项目列表的视图,这个视图的控制器被创建了很多次,每次单击按钮(例如)。该视图显示了一个项目列表,因此每次创建该数组时,都会通过控制器中的Http GET接收该数组,并且该视图具有
ng-repeat="item in vm.items"
然而,在我看来,如果我把这个列表保存在一个服务上,根据我的理解,每个客户端只创建一次,我可以在创建服务时使用一次GET请求,并在如下视图中使用它:
ng-repeat="item in vm.service.items"
此项目列表的更新将仅通过使用信号器进行。
第二种方法有缺陷吗?因为现在我看不出不这么做的原因。
是的,对我来说,这听起来像是一项经典的DAL服务。我建议你在那里使用promise,这样你就可以跟踪所需数据何时得到解决。这里有一个例子:
export class EntityProvider {
static serviceName: string = "entityProvider";
private entity = null;
static $inject : string[] = ["YourService", "$q"];
constructor(yourService: YourService, private mQService: ng.IQService) {
}
get getEntity(): ng.IPromise<ConnectionInfoDto[]> {
if (this.entity === null) {
return this.yourService.getEntity()
.then(result => {
this.entity = result.data;
return this.entity;
});
} else {
return this.mQService.when(this.entity);
}
}
static bootstrap(aModule: ng.IModule) {
return aModule.service(this.serviceName, EntityProvider);
}
}
相关文章:
- 尝试将服务链接到控制器时出现角度问题
- 使用服务(AngularJS)在控制器之间共享数据
- 从AngularJS中的另一个文件中的控制器访问服务
- AngularJS 1.5.x服务未正确绑定,并且未在控制器中更新
- Ionic将firebase注入工厂,同时将控制器和服务保存在不同的文件中
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- Http服务工厂将未定义的返回到Angular中的控制器
- 由控制器调用的服务更改时,Angular未更新视图
- 将Browserify与Angular JS结合使用--将服务传递到控制器中
- 将工厂服务数据发送到控制器,以便在视图中使用
- 角度控制器服务承诺不起作用
- 跨控制器服务的角度json数据
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 推迟在应用程序运行angularjs上创建控制器/服务
- 将主机配置传递给控制器/服务
- 控制器/服务的最佳实践
- 控制器+服务结构不能正确触发离子切换ng-change
- 未捕获的TypeError: undefined不是函数'当把控制器/服务放在单独的js文件中时
- 一个AngularJS文件中有多少控制器(服务、工厂、指令)
- 我应该保护我的 Angular 控制器/服务免受全局命名空间的影响吗?