2013-10-25 85 views
0

我正在Ember.js中構建一個應用程序,並且遇到監視我向用戶顯示的屬性的問題。當用戶登錄時,我正在查詢一個API,以獲得具有名爲「isTrue」的字段的消息數量並查看有多少個值爲「true」。Ember.js控制器屬性問題

當用戶登錄到系統中我從他們的Cookie在應用控制器通過在init抓一個ID:

該數據然後被顯示在應用程序模板函數()。這是做這件事的最好方法嗎?我有一個問題,當用戶單擊按鈕將記錄從「isNew」==「true」更改爲「isNew」==「false」時,該屬性未正確更新。這是做這件事的最好方法,還是我從Ember的角度來看它是錯誤的?

App.ApplicationController = Ember.Controller.extend({ 

    messageCount: null, 

    init: function() { 

     var test = 0; 

     //get the cookie 
     //query an API to retrieve a set of records to check if a specific field is marked as true 
     //Compute the messageCount based on the number of records that are marked as true and set test equal to the message count. 

     this.set("messageCount", test); 

    getMessages: function() { 

     //repeat the code from the init function 
    } 

    actions: { 

     markAsRead: function() { 
      getMessages(); 
     } 
    } 

}) 
+0

'isNew'在哪裏玩?當你點擊行動'markAsRead'?財產(我猜'messageCount')如何得到更新,只有在客戶端或服務器上?我想我只是沒有看到你試圖更改記錄的位置...... – Hana

+0

@Hana'isNew'存儲在服務器上,每次用戶登錄時都會通過API查詢或者他們將消息標記爲已讀通過傳播到markAsRead函數的操作。 – datapanda

回答

0

檢查他們如何跟蹤此簡單To Do List example中已完成任務的數量。

你應該設置你屬性是這樣的:

messageCount: function() { 
    return this.filterProperty('isNew', true).get('length'); 
}.property('[email protected]'), 

無需現在手動調整時,它會自動更新。

+0

如果將屬性值存儲在服務器上時,你會如何加入?每次用戶單擊markAsRead時,通過API調用將該記錄的屬性「isNew」更改爲false,然後重新讀取記錄,並相應地更新屬性messageCount。 – datapanda

相關問題