5 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
在angularjs的config中使用service的方法:
它是一個(gè)可注入的構(gòu)造器,在AngularJS中它是單例的,用它在Controller中通信或者共享數(shù)據(jù)都很合適
var app = angular.module('app' ,[]);
app.config(function ($provide) {
$provide.service('movie', function () {
this.title = 'The Matrix';
});
});
app.controller('ctrl', function (movie) {
expect(movie.title).toEqual('The Matrix');
});
語法糖:
app.service('movie', function () {
this.title = 'The Matrix';
});
在service里面可以不用返回東西,因?yàn)锳ngularJS會(huì)調(diào)用new關(guān)鍵字來創(chuàng)建對(duì)象。但是返回一個(gè)自定義對(duì)象好像也不會(huì)出錯(cuò)。

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
1.第一種是通過調(diào)用Context.startService()啟動(dòng),調(diào)用Context.stopService()結(jié)束,startService()可以傳遞參數(shù)給Service
2.第二種方式是通過調(diào)用Context.bindService()啟動(dòng),調(diào)用Context.unbindservice()結(jié)束,還可以通過ServiceConnection訪問Service。
在Service每一次的開啟關(guān)閉過程中,只有onStart可被多次調(diào)用(通過多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個(gè)生命周期中只能被調(diào)用一次。

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
可以通過在activity中 設(shè)置事件 。當(dāng)事件出發(fā)時(shí) 利用intent
Intent intent=new Intent(MainActivity.this, ServiceDemo.class);
switch (v.getId())
{ case R.id.startBtn:
startService(intent); 啟動(dòng)
break;
case R.id.stopBtn:
stopService(intent); 停用
break;
default:
break;

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
Service的典型示例
在AngularJS中,Service都是單例的實(shí)體,通常會(huì)將Service作為向后臺(tái)交互的數(shù)據(jù)提供者,所有的需要數(shù)據(jù)的組件只需要依賴于這個(gè)Service即可。
var app = angular.module('MyApp', []);
app.factory('SearchSettingService',
['$http', '$q', function($http, $q) {
return {
setting: function() {
var deferred = $q.defer();
$http.get('/settings.json').success(function(result) {
deferred.resolve(result);
}).error(function(result) {
deferred.reject("network error");
});
return deferred.promise;
}
};
}]);
$httpBackend
測(cè)試的時(shí)候,我們不需要真實(shí)的發(fā)送HTTP請(qǐng)求來獲取數(shù)據(jù)。如果可以只測(cè)試Service的邏輯,當(dāng)發(fā)送請(qǐng)求時(shí),我們將這個(gè)請(qǐng)求攔截下來,然后返回一個(gè)預(yù)定義好的數(shù)據(jù)即可:
it('should have settings from http request', function() {
var result;
var expected = {
"period": "day",
"date": "Sat Dec 21 12:56:53 EST 2013",
};
httpBackend.expectGET('/settings.json').respond(expected);
var promise = settingService.setting();
promise.then(function(data) {
result = data;
});
- 5 回答
- 0 關(guān)注
- 1133 瀏覽
添加回答
舉報(bào)