访问动态参数EmberJS

时间:2013-05-28 17:43:03

标签: javascript model-view-controller ember.js

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

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

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

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

 model: ->
   App.Trip.find()

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

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

1 个答案:

答案 0 :(得分: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的数据绑定将自动更新您的视图。

Example in JSBin