我希望在用户登录后更新视图。从服务器获取他的个人资料图片,名称等,并使用该信息刷新视图。而且我不想改变我的路线。
我正在处理登录的方式是使用布尔变量isLoggedIn
。一旦用户登录,我将其值更改为true
。我有一个绑定侦听该变量的更改,然后使用用户信息执行对实际路径模型的更新。
App.TripsRoute = Ember.Route.extend
isLoggedInBinding: 'App.Session.isLoggedIn'
isLoggedInChanged: (->
@model()
).observes('isLoggedIn')
model: ->
App.Trip.find()
所以问题是:有没有办法从路由的自定义方法中访问动态参数来更新相关模型?
注意:我不想在路由的模型钩子中执行此操作,因为它仅在通过URL输入时执行。
答案 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的数据绑定将自动更新您的视图。