2013-05-28 4 views
1

Я хочу обновить представление после входа пользователя в систему. Получение его профиля, имени и т. Д. С сервера и использование этой информации для обновления представления. И я не хочу менять маршрут, в котором я нахожусь.Доступ к динамическим параметрам EmberJS

То, как я обрабатываю вход в систему, - это логическая переменная isLoggedIn. Я меняю значение на true после входа пользователя. У меня есть привязка, которая прослушивает изменения этой переменной, которая затем выполняет обновление модели фактического маршрута с информацией о пользователе.

App.TripsRoute = Ember.Route.extend 
isLoggedInBinding: 'App.Session.isLoggedIn' 

isLoggedInChanged: (-> 
    @model() 
).observes('isLoggedIn') 

model: -> 
    App.Trip.find() 

Так что вопрос: Есть ли способ, чтобы получить доступ к динамическим параметрам внутри пользовательского метода маршрута, чтобы обновить соответствующую модель?

Примечание: Я не хочу делать это внутри крюка модели маршрута, потому что он выполняется только при вводе через URL.

ответ

1

Вы можете сохранить ссылку на текущего пользователя в App и получить доступ к этому, чтобы определить, зарегистрирован ли пользователь и использовать данные для обновления текущего вида.

Хранить currentUser:

App = Ember.Application.create({ 
    currentUser: null 
}); 

то это может быть получить/установить в любом месте вашего приложения, используя App.get('currentUser') или App.set('currentUser', newUser).

В шаблоне вы можете проверить, если пользователь вошел в систему или нет, и автоматически отображать их информацию, если они вошли в систему:

{{#if App.currentUser }} 
    <img {{bindAttr src='App.currentUser.avatarURL'}} /> </br> 
    Logged in as: {{App.currentUser.name}} 
    {{else}} 
    Not logged in. 
    {{/if}} 

После обновления App.currentUser с привязками данных текущего пользователя объекта пользователя Эмбера будет автоматически обновляться ваш профиль с информацией профиля.

Example in JSBin

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