1

我们有这样一个场景:

报价--->创建

所以路线名称quotequote.create.

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

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

当我导航到quote它时,它会呈现报价视图。从那里我导航到quote.create它并呈现创建视图。但是,返回quotefrom 不会渲染quote.create任何内容。

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

当我回到 \quote url 路由'quote.index' 时被寻找。由于它是“自动”定义的,因此没有任何反应。当我明确定义路由时,ember 会尝试查找quote.index模板和视图,但这些都不存在。

我尝试过的解决方法是:

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

编辑

嘿,骗子,这是我的小提琴 :) http://jsfiddle.net/EbenRoux/Mf5Dj/2/

4

1 回答 1

0

Ember.js 在转换到父路由时不会重新渲染父视图,因此不建议将 into 与父视图模板一起使用。

有一种更简单的方法可以创建您要尝试的内容:使用报价/索引路线:

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

于 2013-10-22T13:05:21.530 回答