ember(+ ember-auth)linkTo登录用户个人资料

时间:2013-07-11 16:18:51

标签: ember.js ember-data

为了直截了当,我有一个应用程序,其配置文件可以访问:

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。这有效,但显然是一个黑客。

有没有'余烬'解决方法?

2 个答案:

答案 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的示例。