2013-02-26 87 views
1

我嘗試使用下面的模板:計算財產#如果沒有更新

<script type="text/x-handlebars" data-template-name="login"> 
    {{#if logged_in}} 
     Logged in 
    {{else}} 
     Not logged in 
    {{/if}} 
</script> 

與模型:

App.Login = DS.Model.extend({ 
    access_token: DS.attr('string'), 
    logged_in: function() { 
     return (this.get('access_token') != null); 
    }.property('access_token') 
}); 

顯示用戶的登錄狀態。

的是的access_token正在通過在路徑的setupController異步回調設置:

App.LoginRoute = Ember.Route.extend({ 
    setupController: function(controller, model) { 
     controller.set('content', model); 

     // call async login method 
     window.setInterval(function test() { 
      model.set('access_token', 'MY_ACCESS_TOKEN'); 
      console.log(model.get('access_token')); 
     }, 5000); 
    }, 
    model: function() { 
     return App.Login.find(); 
    } 
}); 

的問題是LOGGED_IN似乎從未改變(即使執行model.set線和「ACCESS_TOKEN」被更新) 。我做錯了什麼,或者我應該提交一個錯誤?

全碼:http://jsfiddle.net/Q8eHq/

+0

問題不是如果幫手。如果你記錄model.get(「logged_in」),你會看到它返回undefined。你的小提琴使用什麼版本? – mavilein 2013-02-26 10:05:35

回答

3

你的模型設置爲App.Login.find()它返回一個枚舉,而不是一個單一的對象。做到這一點的方法之一,是將模型設置爲一個對象:

App.LoginRoute = Ember.Route.extend({ 
    model: function() { 
     return App.Login.find(1); 
    } 
}); 

或者,如果你打算使用動態路由(如用戶/登錄/ 9):

App.LoginRoute = Ember.Route.extend({ 
    model: function(params) { 
     return App.Login.find(params.id); 
    } 
});