我需要一些幫助來了解以下角度服務代碼中的錯誤。角度服務問題
編輯: 我有不同的js文件數控制器使用CRUD API像
$http.get('/api/sites/' + service.siteID)
或只是需要變量指令像
templateUrl: '../../' + service.template + ' + '.html'
所以我創造之間共享這些變量服務所有的js文件,而不是在每個文件中進行api調用。
這裏是服務
app.service('SharedData', function($http) {
$http.get('config.json')
.success (function(data) {
var siteID = data._id;
console.log(siteID); // return 553e2d15f91e4bd75d000008
$http.get('/api/sites/' + siteID)
.success(function(site) {
var template = site.template;
console.log(template); // return myTemplate
})
.error(function(data) {
console.log('Error: ' + data);
})
})
.error(function(data) {
console.log('Error: ' + data);
})
service = {
siteID : siteID, // return undefined instead of 553e2d15f91e4bd75d000008
template : template // return undefined instead of myTemplate
};
return service;
})
我只想做一個精確的。如果我寫我的服務類似下面,它工作得很好,我的意思是值在所有控制器和指令以及通過
app.service('SharedData', function() {
service = {
siteID : '553e2d15f91e4bd75d000008',
pageID : '553e2d15f91e4bd75d000009',
template : 'template1',
layout : 'home'
};
return service;
})
非常感謝
編輯
我修改了服務爲遵循
app.factory('SharedData', function($http) {
service = {};
$http.get('config.json')
.success (function(data) {
service.siteId = data._id;
//console.log(service.siteId);
$http.get('/api/sites/' + service.siteId)
.success(function(site) {
service.template = site.template;
//console.log(service.template);
})
})
service.pageID = '553e2d15f91e4bd75d000009';
service.layout = 'home'
return service
})
在控制器的console.log(服務)與所有值返回一個對象:
layout: "home"
pageID: "553e2d15f91e4bd75d000009"
siteId: "553e2d15f91e4bd75d000008"
template: "template1"
console.log('Layout is ' + service.layout); // return home
console.log('PageID is ' + service.pageID); // return 553e2d15f91e4bd75d000009
但
console.log('siteID is ' + service.siteId); // return undefined !!!!!
console.log('template is ' + service.template); // return undefined !!!!!
不明白,請幫助
我認爲這是一個有點亂做這樣...您需要3種聲明,其中兩種僅作爲最終服務對象的傳遞。 – tpie
是的,我同意。雖然OP的問題基本上不了解對象的範圍。 –