我有一个用户列表和两个视图:一个用于列出所有可用用户的表视图,以及一个用于查看特定用户详细信息的详细视图。现在我想在导航菜单中为一个特殊用户(" me"用户)提供一个链接。我试过了:
{{#linkTo "user/me"}}Me{{/linkTo}}
恩伯说:
Assertion failed: The attempt to linkTo route 'user/me' failed. The router did not find 'user/me' in its possible routes: 'users', 'user', 'index'
我也尝试过:
{{#linkTo "user" "me"}}Me{{/linkTo}}
但是ember链接到#/user/undefined
,我想要#/user/me
。
如何链接到特定的用户ID?
我有this jsfiddle来展示我想要做的事情。
答案 0 :(得分:2)
您需要添加UserRoute
以这种方式对模型进行序列化。
App.UserRoute = Ember.Route.extend({
serialize: function(model) {
return {user_id:model};
}
});
我刚刚在这里使用了model
,您将使用模型的某些属性,通常为id
。
使用linkTo
的方法是为其提供资源名称,与嵌套无关,并限定动态细分。
例如,post / 1 / comment / 1。您的linkTo
将是,
linkTo 'comment' thePost theComment
其中thePost
和theComment
是与Post-1和Comment-1对应的模板可访问的绑定/变量。
这是工作jsfiddle。
编辑:您需要在setupController
setupController: function(controller, model) {
App.User.find(model).then(function(result) {
controller.set('model', result);
});
}
更新了jsfiddle。
更新2 将setupController添加到fiddle.(关于直观像素)
答案 1 :(得分:0)
我创建了一个手动链接,没有使用linkTo
,这就是我想要的。这是updated jsfiddle。使用这种方法,不需要使用Routes
,并且原始链接不会被破坏。
导航栏中的代码现在是:
<nav>
{{#linkTo "users"}}Users{{/linkTo}}
{{#linkTo "user" "me"}}Me (bad!){{/linkTo}}
<a class="ember-view" href="#/user/me">Me (good!)</a>
</nav>
这是生成的html:
<nav>
<a id="ember250" class="ember-view" href="#/users">Users</a>
<a id="ember253" class="ember-view" href="#/user/undefined">Me (bad!)</a>
<a class="ember-view" href="#/user/me">Me (good!)</a>
</nav>
这种方法的缺点是:
html
手动定义链接,这在linkTo
的集合中看起来很尴尬。也许我应该为此创建一个linkToId
把手助手。href
。也许这可以通过访问路由器配置在linkToId
帮助程序中处理。ember-id
,我看不到解决方法。不知道这有什么副作用。