为了直截了当,我有一个应用程序,其配置文件可以访问:
this.resource('user', {path: '/user/:user_id'});
可以从访问者和(登录用户)访问。现在我还有一个菜单栏,它只对登录用户有一个指向用户配置文件的链接(这样就是/ user /:loggedin-user_id)。我正在使用ember-auth来验证用户身份并为我的模型提供数据。 这里的问题似乎是{{linkTo'user'}}不起作用,因为对于一个应该链接到/ user / 28的用户,对于下一个用户/ user / 15。只需他/她自己的个人资料。我觉得它不起作用,因为ember应该知道要显示什么ID(尽管是的,我完全不了解其根本原因)。 Ember-Auth确实提供了App.Auth.get('userId')来获取当前登录用户的ID,但我真的不知道如何让ember知道这一点。
所以我必须知道的是通过
手动设置链接<a {{bindAttr href="App.loggedInUser"}}>
where-as此变量在App.Auth.get('userId')的Application控制器中设置为正确的url。这有效,但显然是一个黑客。
有没有'余烬'解决方法?
答案 0 :(得分:3)
ember-auth dev这里。
直接解决方案:
首先,请求ember-auth加载用户当前用户模型。假设您的用户模型名为App.User
,并且它实现了App.User.find(id)
。
App.Auth = Ember.Auth.create
# ...
userModel: 'App.User' # default null
# pass the string, not a class App.User
# access the current user model
# as with all things ember, this is loaded asynchronously
App.Auth.get('user')
(从docs复制。)
接下来,将此动态模型传递给您的车把链接:
{{#linkTo 'user' App.Auth.user}}Link To Current User{{/link}}
或其他 - 例如使它成为App.Auth.get('user')
等的绑定
以防万一,(js)App.get('foo')
相当于ember-handlebars App.foo
。
答案 1 :(得分:0)
您的user
路线有动态细分。您可以将user
模型传递给linkTo
,锚点将针对不同的用户指向该路由,具体取决于传递的用户模型的ID。
{{linkTo 'user' userObj}}Profile{{/linkTo}}
传递的模型可以是带有id的普通对象,默认序列化仍然有效。因此,如果将App.Auth.get('userId')
包装到具有id的对象中,则不需要完整的模型对象。
以下是jsbin的示例。