2012-03-11 72 views
1

JSON加載後可以重新渲染視圖嗎?用embajs中的ajax填充視圖?

當前模板&觀點我永遠不會使變量 「CURRENT_USER」

我的模板:

<body> 
... 
<script type="text/x-handlebars"> 
    {{#view MyApp.LogoutView id="logout-btn"}}} 
     <button> 
      Logout: {{ current_user }} 
     </button> 
    {{/view}} 
</script> 
... 
</body> 

我的文件準備:

window.MyApp = Ember.Application.create(); 

$(document).ready(function() { 
    MyApp.LogoutView = Ember.View.extend({ 
     userString: function() { 
      var name = this.get('current_user'); 
      return name; 
     }.property('current_user') 
    }); 

    $.getJSON('/api/1/me', function(data) { 
     var user = MyApp.UserModel.create({id: data.id, username: data.username}); 
     MyApp.current_user = user; 
    }); 
}); 

我也嘗試: {{MyApp.current_user}}在模板中,但與Firefox它拋出錯誤:

Must use Ember.set() to access this property.

在Chrome我得到它:

<button>Logout <MyApp.UserModel:ember161></button> 

感謝。

回答

1

我無意中發現一個解決方案,不知道它的一個很好的,但似乎工作:

MyApp.current_user = MyApp.UserModel.create(); 

$.getJSON('/api/1/me', function(data) { 
    var user = MyApp.UserModel.create({id: data.id, username: data.username}); 
    MyApp.set('current_user', user); 
}); 
+2

到以前的做法不同的是,你現在用'set'分配用戶對象。這允許Ember.js處理綁定等。所以你總是應該使用'set'和'get'來分配和檢索值。 – pangratz 2012-03-11 18:52:00