2

我有一个带有嵌套路由的 ember 应用程序,但是在转换回父路由时,我遇到了销毁子视图的问题。可能最容易看这个小提琴http://jsfiddle.net/j32yT/2/ - 它首先显示“用户”列表;单击“创建”会导致带有“保存”按钮的用户创建“表单”。保存时,该操作在返回其父级的路由处被触发。

我希望在过渡时创建视图会被破坏,但似乎没有。添加一个函数来处理路由出口确实让我清理干净,但看起来有点乱。我是否误解了路由的工作原理?

更新

通过在我的用户路由中引入索引路由,我能够实现我想要的 - 这里有一个新的小提琴http://jsfiddle.net/AsJca/1/ - 我在正确的道路上吗?对这些东西不熟悉,所以还不明白什么可能构成最佳实践!

4

1 回答 1

0

你有一个outletforApplication View和一个 for UsersView

<script id="application-template" type="text/x-handlebars">
    {{outlet}}
</script>

<script id="users-template" type="text/x-handlebars">
    {{#each user in controller}}
    {{user.name}}
    {{/each}}    
    <button {{action create_user}}>Create</button>
    {{outlet}}
</script>

当你这样做:

router.get('applicationController').connectOutlet('users');

outletofapplicationView被填充UsersView,但看到Users View有它自己的。outlet当你这样做时,router.get('usersController').connectOutlet('createUser');这个出口被填充create new form。因此,它与创建新按钮一起驻留在users-template.

您可以将其更改为,

router.get('applicationController').connectOutlet('createUser');

如果你想更换它,但再想想你真正需要什么,你就知道了。

于 2012-08-29T20:56:46.913 回答