不知怎的,即使在最简单的例子中,当我尝试转换到另一个州/路线时,我想出的视图也会消失。
我的索引路线如下:
--Application-------------------------------
| --Header-------------------------------- |
| | --ViewA----------------------------- | |
| | | View A! | | |
| | |__________________________________| | |
| | | |
| | --ViewB----------------------------- | |
| | | View B! | | |
| | |__________________________________| | |
| |______________________________________| |
| |
| --Main---------------------------------- |
| | I stay here, no matter what! | |
| |______________________________________| |
|__________________________________________|
一旦我进入'Next'状态,ViewB就会消失,看起来像这样:
--Application-------------------------------
| --Header-------------------------------- |
| | --ViewA----------------------------- | |
| | | View A! | | |
| | |__________________________________| | |
| |______________________________________| |
| |
| --Main---------------------------------- |
| | I stay here, no matter what! | |
| |______________________________________| |
|__________________________________________|
在此示例应用程序http://jsfiddle.net/SAra5/4/
中可以看到此行为答案 0 :(得分:0)
如果您没有指定它在新路线上执行任何操作,它看起来很混乱并且不会渲染所有出口。使事情正常工作的方法是在NextRoute
中包含您希望再次呈现路线的内容。
App.NextRoute = Ember.Route.extend({
renderTemplate: function () {
this.render('header', {'outlet':'header', 'into':'application'});
this.render('main', {'outlet':'main', 'into':'application'});
this.render('viewB', {'outlet':'viewB', 'into':'header'});
this.render('viewA', {'outlet':'viewA', 'into':'header'});
}
});
如果在更改为this.render('viewB', {'outlet':'viewB', 'into':'header'});
之前在索引路由中将this.render('viewA', {'outlet':'viewA', 'into':'header'});
与NextRoute
交换,您会看到它现在只呈现viewB!很奇怪,是吗?我不确定这是当时的错误或功能。
答案 1 :(得分:0)
我不确定您的预期行为,但最好将您的IndexRoute
抽象出来,因为您在每条路线中都需要相同的内容,否则它会被删除:http://jsfiddle.net/SAra5/5/
然而,你的例子似乎令人费解。我认为你的解决方案在于{{render}}
。请在此处查看我的帖子:Different rendering techniques in emberjs handlebars template