1

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

this.resource('user', {path: '/user/:user_id'});

这可以从访问者和(登录用户)访问。现在我还有一个菜单栏,它只针对登录的用户,有一个指向用户配置文件的链接(即 /user/:loggedin-user_id)。我正在使用 ember-auth 对我的模型的用户和 ember 数据进行身份验证。这里的问题似乎是 {{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') 设置为正确的 url。这可行,但显然是一个黑客。

有没有解决这个问题的“余烬”方法?

4

2 回答 2

3

ember-auth开发人员在这里。

直接解决:

首先,要求 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')

(从文档复制。)

接下来,将此动态模型传递给您的车把链接:

{{#linkTo 'user' App.Auth.user}}Link To Current User{{/link}}

或以其他方式 - 例如使其绑定到App.Auth.get('user')等。

以防万一, (js)App.get('foo')相当于 ember-handlebars App.foo

于 2013-07-13T13:07:08.103 回答
0

您的user路线有一个动态路段。您可以将user模型传递给 ,linkTo并且锚点将根据传递的用户模型的 id 为不同的用户指向该路由。

{{linkTo 'user' userObj}}Profile{{/linkTo}}

传递的模型可以是带有 id 的普通对象,默认序列化仍然有效。因此,如果您App.Auth.get('userId')使用 id 包装到对象中,则不需要完整的模型对象。

这是一个示例jsbin

于 2013-07-13T06:14:26.373 回答