Ember.js视图在转换时消失

时间:2013-02-15 10:26:10

标签: view ember.js transition routes

不知怎的,即使在最简单的例子中,当我尝试转换到另一个州/路线时,我想出的视图也会消失。

我的索引路线如下:

--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/

中可以看到此行为

2 个答案:

答案 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