代码之家  ›  专栏  ›  技术社区  ›  Eben Roux

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

  •  1
  • Eben Roux  · 技术社区  · 12 年前

    我们有这样一个场景:

    引用 --->创造

    因此路由名称 quote quote.create .

    问题是我们需要将模板呈现到主出口中。因此,在我们的主要路线(所有其他路线都继承自)中,我们有这样的路线:

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

    当我导航到 引用 它呈现报价视图。从那里我导航到 报价创建 并且它渲染创建视图。然而 返回 引用 从…起 报价创建 不渲染任何内容。

    我该怎么避开这个?

    当我回到\quote url路由时,会查找'quote.index'。由于它是“自动”定义的,所以不会发生任何事情。当我明确定义路由时,ember试图找到 quote.index 模板和视图以及 这些 不存在。

    我尝试过的一种变通方法是:

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

    编辑 :

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

    1 回复  |  直到 12 年前
        1
  •  0
  •   Gaurav    12 年前

    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/