1. 程式人生 > >AngularJS中serivce,factory,provider的區別

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(

相關推薦

AngularJSserivcefactoryprovider區別

一、service引導 剛開始學習Angular的時候,經常被誤解和被初學者問到的元件是 service(), factory(), 和 provide()這幾個方法之間的差別。This is where we'll start the twenty-five days of Angul

AngularJSservicefactoryprovider區別

angular原理 :執行在JavaScript context環境下 通過佇列watch列表 監聽變數 ,APPLY 放入事件佇列中,digest去輪訓列表 .control 初始化scope和增加方法 .service 理解為MVC結構中的M層,來處

angularjs避免被轉義HTMl標識能被識別可以正常鏈接下載!

strong mes logs str style content 代碼 ret .html http://www.cnblogs.com/sxz2008/p/6434036.html如果希望正常解析html代碼,如下: var app = angular.module(‘

AngularJSDirective傳function並呼叫

在Angularjs中,指令是個好東西,可以極大的提高程式碼的重用性,也可以使各個模組之間解耦,提高程式碼的可維護性。但是在實際開發中,僅僅用它來傳遞值是遠遠不夠的,傳遞方法在很多情況下比傳遞值更加有效,下面我來介紹下如何往directiive中傳遞方法。

電視機進入工廠模式factory怎麼退出

有時按遙控器,不小心會進入FACTORY模式,電視上一直顯示這幾個紅色英文字母。 處理方法是,找到遙控器上的隱藏按鈕(凹陷在遙控器上面的一個小圓孔,就像路由器的reset按鈕一樣), 用牙籤點選他,點選多次,一直到電視上不顯示任何文字,就ok了。 工程模式下,音量+一次可

AngularJSProvider們:Service和Factory等的區別

.config 返回 服務 -a 也不會 sch arr 圖片 get 供應商($provide) $provide服務負責告訴Angular如何創造一個新的可註入的東西:即服務。服務會被叫做供應商的東西來定義,你可以使用$provide來創建一個供應商。你需要使用$pr

javascript的innerHTMLinnerTextouterHTML的用法及其區別

document 去除html標簽 cnblogs class 示例 scrip ie7 及其 描述 示例html代碼: <div id="test"> <span style="color:red">test1</span>

弗洛伊德的人格結構說潛意識前意識意識和自我本我超我的區別

運用 潛意識 有時 特性 緩解 正常的 可能 pan 特征   意識是大腦對客觀存在的反應,是個體在任何時刻覺察到的感覺與體驗,既有特性又有共性。   人格是人的性格與氣質,是個體的特性。   意識分為:顯意識、前意識、無意識(=潛意識?=原意識?)。弗洛伊德

jsdecodeURI()和encodeURI()區別decodeURIComponent和encodeURIComponent區別

nbsp sch www 問題 encode 替換 副本 字符替換 序列 decodeURI()定義和用法:decodeURI()函數可對encodeURI()函數編碼過的URI進行解碼.語法:decodeURI(URIstring)參數描述:URIstring必需,一個字

jQuery:first:first-childfirst()的使用區別

on() color light 分享 jquery baidu head fcm art :first 獲取第一個元素。 :first-child 選擇器選取屬於其父元素的第一個子元素的所有元素。 first() 返回被選元素的首個元素。 測試代碼如下: <

python花括號括號小括號的區別

.com title htm targe 表示 url pos lan itl python中,花括號,中括號,小括號的區別 Python主要有三種數據類型:字典、列表、元組。其分別由花括號,中括號,小括號表示。 如: 字典:dic={‘a‘:12,‘b‘:34} 列表:l

五 Python元祖列表字典的區別

執行 ear 序列 not auth 標記 ron pytho tro Python中有3種內建的數據結構:列表、元祖和字典: 1.列表   list是處理一組有序項目的數據結構,即你可以在一個列表中存儲一個序列的項目。   列表中的項目應該包括在方括號中,這樣P

oracle charvarcharvarchar2的區別

設計 var 自動 一定的 效率 將在 長度 lec 補齊 區別: 1. CHAR的長度是固定的,而VARCHAR2的長度是可以變化的, 比如,存儲字符串“abc",對於CHAR (20),表示你存儲的字符將占20個字節(包括17個空字符),而同樣的VARCHAR

Python的元組字典、計算器代碼實例及python2與python3的區別

所有 time tor result inpu __name__ 字符 img 歡迎來到 1.計算器實例#/usr/bin/env python # -*- coding:utf-8 -*- # @time :2018/1/22 21:09 # @Author :Fen

JAVA列表集合之間的區別

選擇 blank and mas 排序。 hash 也會 linked 類型 整體來看List,Set,Map都是實現了Collection接口的接口。重復性: List允許存在重復的元素,也就是說List中可以在不影響現有元素的值及其索引的同時插入新的重復元素。 Set不

javaequalshashcode和==的區別

nat 等號 bsp alt star object 名稱 改變 set 1、== java中的數據類型,可分為兩類: 1.基本數據類型,也稱原始數據類型 byte,short,char,int,long,float,double,boolean 他們之間的比較,應用雙

Java的StringStringBuilderStringBuffer三者的區別

www body 之間 jvm uil pre pen html 常量 這三個類之間的區別主要是在兩個方面,即運行速度和線程安全這兩方面。 首先說運行速度,或者說是執行速度,在這方面運行速度快慢為:StringBuilder > StringBuffer >

[轉載]Java的StringStringBuilderStringBuffer三者的區別

什麽 syn 很多 如果 情況下 一個 建議 運行 r+ 最近在學習Java的時候,遇到了這樣一個問題,就是String,StringBuilder以及StringBuffer這三個類之間有什麽區別呢,自己從網上搜索了一些資料,有所了解了之後在這裏整理一下,便於大家觀看,也

淺談JS的!=、== 、!==、===的用法和區別 JSNull與Undefined的區別 讀取XML文件 獲取路徑的方式 C#CookieSessionApplication的用法與區別? c#反射 抽象工廠

main 收集 data- 時間設置 oba ase pdo 簡單工廠模式 1.0 var num = 1; var str = ‘1‘; var test = 1; test == num //true 相同類型 相同值 te

linux單引號、 雙引號反引號的區別

單引號、 雙引號反引號的區別1、單引號、雙引號用於用戶把帶有空格的字符串賦值給變量的分界符。  [root@localhost sh]# str="Today is Monday"  [root@localhost sh]# echo $str  Today is Monday  如果沒有