ember.js - 如何在 EmberJS 中创建到整页新建/编辑模板的路由

标签 ember.js

我有一个列表 Controller ,其中每个元素都有编辑链接。如何将编辑模板呈现为整页?

一个常见的用例是表单页面很大,将其呈现在列表下方(列表也可能很长)是没有意义的。

在父级导出内渲染编辑模板会破坏层次结构,并且后退/取消按钮不会重新渲染列表。因此,它似乎需要成为列表的子级(并在列表模板的导出中呈现),但它必须隐藏列表模板而不隐藏自身。

最佳答案

在构建玩具应用程序时,我多次遇到过这个“问题”。我的解决方案是为资源添加一个模板。例如,如果您正在构建地址簿,您当前的问题/解决方案如下所示:

App.Router.map(function() {
  this.resource('person', { path: '/person' }, function() {
    this.route('index', { path: '/' });
    this.route('edit', { path: '/:person_id/edit' });
  });
});

您的模板可能如下所示:

<script type="text/x-handlebars" data-template-name="person/index">
    <ul>
        {{#each model}}
            <li>{{name}} - {{#linkTo person.edit this}}Edit{{/linkTo}}</li>
        {{/each}}
    </ul>

    {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="person/edit">
    {{#each model}}
        {{view Ember.TextField valueBinding="name"}}
    {{/each}}
</script>

要停止在索引路由的路由器中渲染编辑模板,您需要添加模板:

<script type="text/x-handlebars" data-template-name="person">
    {{outlet}}
</script>

并从 person.index 模板中删除 {{outlet}}。

这样,您的索引和编辑模板都是 person 资源的子级,并且应该加载到 person 模板的 {{outlet}} 中,而不是加载到 person.index {{outlet}} 中。

希望这是有道理的。

关于ember.js - 如何在 EmberJS 中创建到整页新建/编辑模板的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16957654/

相关文章:

javascript - chrome 中 document.registerElement 的替代代码

javascript - `checked` 单选按钮输入属性不存在

ember.js - 在 IntelliJ IDEA 中使用命令行程序运行配置

ember.js - 手动序列化 ember-data 模型

ruby-on-rails - 使用哪个 gem : emberjs-rails vs rasputin vs ember-rails?

ember.js - Ember-CLI:找不到模块 'broccoli-static-compiler' 错误:找不到模块 'broccoli-static-compiler'

javascript - 如何在没有事件的情况下调用 ember 辛烷模板内的函数?

Ember.js:如何在嵌套路由场景中刷新父路由模板?

ember.js - 恢复对 ember 数据模型的更改

ember.js - ember.js 中的嵌套资源,向带有夹具数据的帖子添加评论