2012-03-11 3 views
1

Можно ли повторно отобразить представление после загрузки JSON?Наполнить вид с ajax в emberjs?

Текущий шаблон & вид у меня никогда не будет оказывать переменную "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

Смежные вопросы