惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
美团技术团队
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
有赞技术团队
有赞技术团队
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
月光博客
月光博客
MyScale Blog
MyScale Blog
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog

博客园 - oldkingsir

angularjs2 学习笔记(六) Form angularjs2 学习笔记(五) http服务 angularjs2 学习笔记(四) 路由 angularjs2 学习笔记(二) 组件 angularjs2 学习笔记(一) 开发环境搭建 Silverlight中利用MEF进行模块注入时注入错误问题分析 prism中ImportingConstructor构造注入时的参数匹配 解决Prism的EventAggregator的事件订阅错误 解决Prism中Region的GetView不起作用问题 Prism中在Region中注入匹配问题 想找一个专业一点的silverlight开发的群,谁知道啊! 在Prism中利用Region的对ContentControl的自动充填问题 silverlight 学习笔记 (九):Prism与MVVM模式在silverlight中的应用 由csdn搬家来此 silverlight 学习笔记 (八):Prism中MEF的初步认识 silverlight 学习笔记 (七):Prism的第一个应用 vs2010中使用odac for .net的连接配置 Silverlight中对WCF RIA 的异步调用的同步处理解决办法 silverlight 学习笔记导航
angularjs2 学习笔记(三) 服务
oldkingsir · 2016-05-27 · via 博客园 - oldkingsir

在anglar2中服务是什么?

如果在项目中有一段代码是很多组件都要使用的,那么最好的方式就是把它做成服务。

服务是一种在组件中共享功能的机制,当我们使用标签将多个组件组合在一起时我们需要操作一些数据或是需要做一些运算时,我们需要做一个服务;服务能帮我们引入外部的数据。那么如何创建一个服务呢?

创建服务

创建一个简单的服务

import {Injectable} from 'angular2/core';

import {PLANETS} from './planets-data';

@Injectable()

export class PlanetService {

    getPlanets(){

        return Promise.resolve(PLANETS);

    }

}

首先需要一个Injectable的指令,这个指令能告诉其他引用的组件这个服务是可注入的。

然后定义一个方法用来返回数据。

服务调用

服务调用也很简单

import {Component} from "angular2/core";

import {PlanetService} from "./planet.service"; //1

import {PlanetComponent} from "./planet.component";

import {Planet} from "./planet";

@Component({

    selector: "my-app",

    templateUrl: "app/planet-list.component.html",

    directives: [PlanetComponent],

    providers:[PlanetService], //2

    styles:[`

                body{

                    padding:0;

                    margin:0;

                    font-family:Roboto,Arial,sans-serif;

                    font-size:16px

                }

                .title {

                    color:#018EFA;

                }

                .clicked{

                    background-color: #9C00FE;

                    color:white;

                }

                .labels{

                    background-color: black;

                    color: white;

                }

    `]

})

export class PlanetListComponent{

    public planets : Planet[];

    public selectedPlanet = {};

    public onNameClick(planet){

        this.selectedPlanet = planet;

    }

    constructor(private _planetService: PlanetService){  // 3

        this.getPlanets();

    }

    // make a call to our planet service

    getPlanets(){  //4

        this._planetService.getPlanets().then((planets:Planet[])=>this.planets = planets);

    }

}

1、  引入服务(import)

2、  使用providers 来注入服务

3、  创建一个服务的示例

使用promise调用服务