2012-03-11 15 views
1

JSONの読み込み後にビューを再レンダリングすることはできますか?emberjsで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ではエラーがスローされます:

Chromeで

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

私はそれを取得する:

<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

関連する問題