2016-01-26 40 views
1

在我的模型我成功地洛在我設置loggedIntrue的值設置爲無功之後,它仍包含它的默認值

loginModel.set('loggedIn', true); 

後默認某些變量null

angular.module('qbs.models').service('loginModel', function() { 

this.name = 'loginModel'; 

var data = { 
    //....... 
    loggedIn: null, 
    loggedOut: null 
    //....... 
}; 

this.set = function (key, value) { 
    data[key] = value; 
}; 

this.get = function (key) { 
    return data[key]; 
}; 

this.getAll = function() { 
    return data; 
}; 
}); 

後來當我用console.log讀出模型時,屬性設置正確。然而,隨着

`loginModel.get('loggedIn');` 

檢索值時,我仍然得到null

的問題是如何能夠。似乎我指的是另一個對象的屬性?!

+0

是在同一個控制器中調用的set和get函數嗎? –

+0

您是否嘗試將「數據」添加到本地對象(this)? – Mijago

+0

是的,相同的名字,並試圖引用它this.data - 仍然是同樣的問題。 –

回答

1

是您的loginModel服務調用是連續的嗎?可能是異步的問題......

Anycase,避免 '' 範圍碰撞嘗試回報聲明外部化服務方法(GET,GET,GETALL ...),就像這樣:

angular.module('qbs.models').service('loginModel', function() { 

var data = { 
    //....... 
    loggedIn: null, 
    loggedOut: null 
    //....... 
}; 

function set (key, value) { 
    data[key] = value; 
}; 

function get (key) { 
    return data[key]; 
}; 

function getAll() { 
    return data; 
}; 

return { 
    name: 'loginModel', 
    get: get, 
    set: set, 
    getAll: getAll 
}; 

}); 
+0

在這裏發生了一些可疑的事情。即使這不起作用。我輸出完整的對象,並且屬性具有更改的值。我用getter檢索它,它仍然爲null.even當我通過loginModel.data.loggedIn'直接訪問它的null而整個對象具有更新值 –

+0

這是一個同步問題。我正在讀那些集之前的變數。但是,該對象會在控制檯中更新同步。 –

0

你應該改變

var data = { 
    //....... 
    loggedIn: null, 
    loggedOut: null 
    //....... 
}; 

this.data = { 
    //....... 
    loggedIn: null, 
    loggedOut: null 
    //....... 
}; 

應該改變data 值,然後你可以使用像loginModel.data.loggedIn

+0

事情是,我要數據屬性是私有的,關閉如。所以只能通過getter/setters –

+0

訪問,實際上,將'var data'更改爲'this.data'並不能解決問題。還是一樣的行爲。 –

+0

是的,那麼只有你的改變會反映到'數據'。 – JiLaBaJi