我有一个带有嵌套路由的ember应用程序但是在转换回父路径时遇到子视图被破坏的问题。可能最容易看到这个小提琴http://jsfiddle.net/j32yT/2/ - 它首先显示一个“用户”列表;单击“创建”将导致用户创建“表单”,并使用“保存”按钮。在保存时,操作将在转换回其父级的路径上回激。
我希望转换离开时创建视图会被破坏,但似乎没有。添加一个函数来处理路由退出确实让我清理,但它似乎有点乱。我误解了路由是如何工作的吗?
更新
通过在我的用户路线中引入索引路线,我能够达到我想要的效果 - 这里有一个新的小提琴http://jsfiddle.net/AsJca/1/ - 我在正确的道路上吗?对这些东西不熟悉,所以还不明白什么可能构成最佳实践!
答案 0 :(得分:0)
outlet
为Application View
,UsersView
为{<1}},
<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');
outlet
的{{1}}被applicationView
填充,但看到UsersView
有自己的Users View
。当你outlet
时router.get('usersController').connectOutlet('createUser');
这个插座充满了create new form
。因此它与创建新按钮一起驻留在users-template
中的插座旁边。
您可以将其更改为,
router.get('applicationController').connectOutlet('createUser');
如果你想替换它,但再想想你真正需要的东西,你就知道了。