1

我想在用户登录后更新视图。从服务器获取他的个人资料图片、姓名等,并使用该信息刷新视图。而且我不想改变我所在的路线。

我处理登录的方式是使用布尔变量isLoggedIn。我将其值更改true为用户登录后。我有一个绑定监听该变量的更改,然后使用用户信息执行对实际路由模型的更新。

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

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

 model: ->
   App.Trip.find()

所以问题是:有没有办法从路由的自定义方法中访问动态参数来更新相关模型?

注意:我不想在路由的模型钩子中执行此操作,因为它仅在通过 URL 输入时执行。

4

1 回答 1

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当前用户的用户对象,Ember 的数据绑定将自动更新你的视图,并使用配置文件信息。

JSBin 中的示例

于 2013-05-28T19:32:12.897 回答