angular factory service provider

随着业务越来越复杂,代码也是越来越复杂。

 

尤其是controller文件,view->controller->service 的数据处理 service->controller->view的数据处理,单单这两个方向的数据处理也许就会用到非常多的代码。

导致后续的维护也是越来越难。

 

让我们把重心稍微向service偏向吧

 

angular有3种方式创建注册自己的service

  1. factory
  2. service
  3. provider

1,factory主要用来创建一个对象service,我们可以向service添加一些属性,最后return service,当别的controller注入factory时,可以通过service调用我们添加的那些属性。

app.factory('myFactory',() => {
    let service = {};
    let attr = 'i am attr';

    service.getAttr = function(){
       console.log(attr);
    }
    return service;
    
});

app.controller('myController',(myFactory) => {
    myFactory.getAttr();
});

 

2,service通过new来实例化,因此我们在编写service时,应该注意在service(es6)构造器中定义属性,函数方式中的this属性。

class Service {
    /*@ngInject*/
    constructor(){
        this.attr = 'i am attr';
    }
    
    getAttr(){
      console.log(this.attr);
    }
}

app.service('myService',new Service);
app.controller('myController',(myService
) => {myService.getAttr(); });
 
 

 

3,provider

      providers 是唯一一种可以传进 .config() 函数的 service,可以在 service 对象启用之前进行一些配置。

class Provider {
    /*@ngInject*/
    constructor(){
        this.attr = 'i am attr';
        this.$get = () => {
               return{
               getAttr:() => {
                    console.log(this.attr)
                }
        }
    }
}

app.service('myProvider',Provider);
app.controller('myController',(myProvider
) => {myProvider.getAttr()};    

 

特别地,controller只能访问provicer中this.$get()返回的内容。

 

一般情况下,factory和service区别很小。

如过需要写的service里不需要定义自己的属性,那么我们可以使用factory,代码较为简洁。

 

转载于:https://www.cnblogs.com/perallina/p/6840623.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Angular 中,服务(Service)是用于封装可重用功能和数据的类。它被设计为在组件之间共享数据和逻辑的中间层。以下是在 Angular 中使用服务的一般步骤: 1. 创建服务: - 使用 Angular CLI 命令行工具生成一个新的服务:`ng generate service my-service`。 - 或者手动创建一个新的 TypeScript 类,并添加 `@Injectable()` 装饰器。 2. 在组件中使用服务: - 在组件类中导入服务类:`import { MyService } from './my-service.service';`。 - 在组件的构造函数中注入服务:`constructor(private myService: MyService) { }`。 - 然后就可以在组件中使用 `myService` 实例来调用服务提供的方法或访问数据。 下面是一个简单的示例: ```typescript import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' // 在根级别提供该服务 }) export class MyService { private data: string = 'Hello from service!'; getData(): string { return this.data; } setData(newData: string): void { this.data = newData; } } ``` ```typescript import { Component } from '@angular/core'; import { MyService } from './my-service.service'; @Component({ selector: 'app-my-component', template: ` <p>{{ message }}</p> <button (click)="updateMessage()">Update Message</button> ` }) export class MyComponent { message: string; constructor(private myService: MyService) { this.message = myService.getData(); } updateMessage(): void { this.myService.setData('New message from component!'); this.message = this.myService.getData(); } } ``` 在上面的示例中,我们创建了一个名为 `MyService` 的服务类,其中包含了一个私有数据 `data` 和两个公共方法 `getData()` 和 `setData()`。然后在组件类 `MyComponent` 中注入了 `MyService` 服务,并通过调用服务的方法来获取和更新数据。 请注意,为了使服务可以在整个应用程序中共享,我们使用了 `providedIn: 'root'` 将服务提供在根级别。这样,Angular 就会在需要时自动创建和管理服务的单一实例。 希望这个简单的例子能帮助你理解 Angular 中如何使用服务。在实际开发中,服务常常用于共享数据、处理业务逻辑、与后端 API 进行通信等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值