Ember js版本1:路由层次结构/激活

时间:2013-10-22 10:09:42

标签: ember.js

我们有这样的方案:

引用 --->创建

所以路线名称为quotequote.create

问题是我们需要将模板渲染到主插座中。所以在我们的主要路线(所有其他都是从中继承)我们有这个:

renderTemplate: function() { this.render({ into: 'application' }); }

当我导航到quote时,它会呈现报价视图。从那里我导航到quote.create并呈现创建视图。但是,从quote 返回quote.create不会产生任何效果。

我怎样才能解决这个问题?

当我回到\ quote url route'quote.index'时,我会寻求。由于它是“自动地”定义的,所以没有任何反应。当我明确定义路线时,ember试图找到quote.index模板和视图,这些不存在。

我尝试过的解决方法是:

App.QuoteIndex{Route|Controller|View} = App.Quote{Route|Controller|View}.extend()

修改

Hey diddle-diddle,这是我的小提琴:) http://jsfiddle.net/EbenRoux/Mf5Dj/2/

1 个答案:

答案 0 :(得分:0)

Ember.js在转换到父路线时不会重新渲染父视图,因此不建议使用with父视图模板。

有一种更简单的方法来创建您尝试的内容:使用引用/索引路径:

<script type="text/x-handlebars" data-template-name="application">
    <h1>Rendering Issue</h1>
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="quote">
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="quote/index">
    <h2>Quote View</h2>
    {{#linkTo 'quote.create'}}Create a new quote{{/linkTo}}
</script>
<script type="text/x-handlebars" data-template-name="quote/create">
    <h2>Quote Create View</h2>
    <p>Some controls would go here.</p>
     {{#linkTo 'quote'}}Go back to quote view{{/linkTo}}
</script>

App = Ember.Application.create({});

App.ApplicationRoute = Ember.Route.extend({
    activate: function () {
        this.transitionTo('quote');
    }
});

App.Router.map(function () {
    this.resource('quote', function () {
        this.route('create');
    });
});

请参阅http://jsfiddle.net/eYYnz/