AngularJS中serivce,factory,provider的區別
一、service引導
剛開始學習Angular的時候,經常被誤解和被初學者問到的元件是 service(), factory(), 和 provide()這幾個方法之間的差別。This is where we'll start the twenty-five days of Angular calendar.
二、service
在Angular裡面,services作為單例物件在需要到的時候被建立,只有在應用生命週期結束的時候(關閉瀏覽器)才會被清除。而controllers在不需要的時候就會被銷燬了。
這 就是為什麼使用controllers在應用裡面傳遞資料不可靠的原因,特別是使用routing的時候。Services
are designed to be the glue between controllers, the minions of data, the slaves of functionality, the worker-bees of our application(就是說services在應用的controllers、 方法、資料之前起到了很關鍵的作用)
現在我們開始看怎麼建立service。每個方法我們都會看到下面兩個一樣的引數:
-
name-我們要定義的service的名字
-
function-service方法
他們都建立了相同的底層物件型別。例項化後,他們都建立了一個service,這些物件沒有什麼功能上的差別。
1、factory()
Angular裡面建立service最簡單的方式是使用factory()方法。
factory()讓我們通過返回一個包含service方法和資料的物件來定義一個service。在service方法裡面我們可以注入services,比如 $http 和 $q等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
angular.module( 'myApp.services' )
.factory( 'User' , function ($http) { // injectables go here
var backendUrl = "http://localhost:3000" ; var service = { // our factory definition
user: {}, setName: function (newName) {
service.user[ 'name' ] = newName;
},
setEmail: function (newEmail) {
service.user[ 'email' ] = newEmail;
},
save: function () {
return $http.post(backendUrl + '/users' , {
user: service.user
});
}
}; return service;
});
|
在應用裡面使用factory()方法
在應用裡面可以很容易地使用factory ,需要到的時候簡單地注入就可以了
?1 2 3 4 |
angular.module(
|