如何在 Ember.js 中动态加载部分/视图/模板

2024-01-03

所以我有以下设置。

在主页上,基于来自使用夹具数据的模型的列表显示生成器列表。

现在,当单击其中一个生成器链接时,会显示一个新页面,其中包含一些根据该夹具数据动态生成的输入字段。

到目前为止,一切都很完美。

现在,当我更改生成器页面中的输入字段的值(选择其中一个生成器后)以查看在输入字段下方的某种预览 div 中更新的更改时,这很容易。我可以用{{generatorFields.0.value}}绑定第一个输入字段 .1.,依此类推,直到绑定所有输入字段。

但正如您可以想象的那样,每个生成器都有自己的格式和输入字段,我想为每个生成器创建一个新的 .hbs 文件,然后将该文件传递到生成器页面以显示预览。

我用部分解决了 0.1% 的问题。在我输入的generator.hbs文件中{{partial "generator-1"}}这加载了我的_generator-3.hbs包含该内容的文件{{generatorFields.0.value}}绑定,然后就可以工作了。但那部分并不是动态的;而是动态的。每次使用不同的生成器时,我都需要加载不同的部分。我怎样才能实现这个目标?

如何动态传递部分名称或根据我拥有的模型数据加载模板?

到目前为止使用的代码如下:

idex.hbs 看起来像这样:

 <table class="table table-hover">
            <thead>
                <tr>
                    <th>#</th>
                    <th>Generator name</th>
                    <th>Action</th>
                </tr>
            </thead>
            <tbody>
                {{#each model}}
                <tr>
                    <td>{{id}}</td>
                    <td>{{title}}</td>
                    <td>{{#linkTo 'generator' this classNames="btn btn-mini pull-right"}}Create file{{/linkTo}}</td>
                </tr>
                {{/each}}
                </tbody>
        </table>

生成器.hbs

{{#each generatorFields}}
<div class="row-fluid">
    <div class="span4">{{name}}</div>
    <div class="span8">{{view Ember.TextField valueBinding='value' class='span12' placeholder='Type value here…'}}</div>
</div>
{{/each}}

{{partial "generator-1"}}

_generator-1.hbs

<h1>Project: {{generatorFields.0.value}}</h1>

app.js

App.Store = DS.Store.extend({
    revision: 13,
    adapter: 'DS.FixtureAdapter'
});

App.Router.map(function () {
    this.resource('index', { path: '/' });
    this.resource('generator', {path: '/generator/:generator_id'});
});

App.IndexRoute = Ember.Route.extend({
    model: function () {
        return App.Generator.find();
    }
});

App.Generator = DS.Model.extend({
    title: DS.attr('string'),
    templateName:  DS.attr('string'),
    generatorFields: DS.attr('generatorFields')
});


// Fixture data

DS.RESTAdapter.registerTransform('generatorFields', {
    serialize: function(serialized) {
        return Em.none(serialized) ? {} : serialized;
    },
    deserialize: function(deserialized) {
        return Em.none(deserialized) ? {} : deserialized;
    }
});

App.Generator.FIXTURES = [{
    id: 1,
    title: "test 1",
    generatorFields: [
        {id: 1, name: "name 1", value: ""}
    ],
    templateName: "generator-1"
}, {
    id: 2,
    title: "test 2",
    generatorFields: [
        {id: 1, name: "name 1", value: ""},
        {id: 2, name: "name 2", value: ""},
    ],
    templateName: "generator-2"
}];

您可以创建一个动态部分助手,它使用传入的名称来渲染{{partial}} helper.

Ember.Handlebars.helper('dynPartial', function(name, options) {
  return Ember.Handlebars.helpers.partial.apply(this, arguments);
});

然后使用这个动态部分,{{dynPartial}}反而。

{{#each item in controller}}
  {{dynPartial item.templateName}}
{{/each}}

对于具有templateName of generator-1。这将用部分渲染_generator-1。请注意,模板的 id/data-template-name 名称必须以下划线开头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ember.js 中动态加载部分/视图/模板 的相关文章

  • 如何从 JavaScript 中计算 HTML 表格的渲染高度?

    调整窗口大小时 我需要知道表格有多大 以便我可以动态地很好地适应中间的所有其他内容 表格高度仅取决于动态加载的内容 如何在 JavaScript 中计算表格的渲染高度 您可以使用element offsetHeight https deve
  • javascript 使用 onclick 创建按钮

    我正在尝试使用 javascript 创建一个具有 onclick 事件的按钮 该事件调用 head 中定义的函数 该函数接收相对于按钮的 dom 对象作为参数 我该怎么做呢 ex
  • React 渲染中的不变违规或 React 中迭代和返回的正确方法

    我在 React 渲染中遇到了持续存在的问题 这段代码 jsx React DOM var AnswerRows React createClass componentDidMount function render function th
  • 如何使用 axios / jest 测试失败的请求

    我创建了一个非常小的应用程序 如果您传递硬币和数量 它可以计算为某些加密货币支付的总价格 我想测试错误 但我总是收到 收到的承诺已解决而不是被拒绝 我相信这是因为如果 url 错误 axios 仍然会解决承诺 我遇到的第二个问题是 我尝试测
  • 检查 DOM 元素是否为复选框

    如何检查给定的 DOM 元素是否为复选框 设想 我有一组文本框和复选框 其中的值是动态分配的 我没有办法识别 DOM 元素是复选框还是文本框 只使用普通的 javascript 你就可以做到 if el type el type check
  • 通知用户消息仍在输入中

    我正在使用 Laravel 5 6 7 Socket IO 和 vue js 我没有使用 Pusher 和 redis 下面是我的代码 用于向与我一对一聊天的用户发送消息 var url http localhost 6001 apps M
  • 是否可以覆盖 javaScript 原始数据类型?

    问题是不言自明的 我知道可以扩展原始数据类型 例如string但有可能覆盖它吗 这是在采访中被问到的一个问题 不 你不能覆盖任何东西 Ecma脚本定义原始类型 http es5 github com x4 3 2 Undefined Nul
  • 向对象添加元素

    我需要填充一个 json 文件 现在我有这样的东西 element id 10 quantity 1 我需要添加另一个 元素 我的第一步是使用该 json 将该 json 放入对象类型中cart JSON parse 现在我需要添加新元素
  • 在 Angular2 项目中集成 Treant-js

    我正在尝试在 Angular2 项目中使用 treant js 但我正在努力解决如何正确集成它的问题 我有一个工作正常的 JavaScript HTML 示例 我正在尝试在 Angular2 中工作 我创建了一个组件 从 npm 添加了 t
  • 如何在 Kohana 中包装 PHP 遗留代码?

    我有大量用 PHP 编写的遗留代码 这些代码不是在任何特定框架上编写的 而是主要是老式风格 即内联 PHP 然而 我的大部分新代码都是在 Kohana 3 1 X 框架上编写的 尽管 Kohana 确实允许遗留代码和 Kohana 文件在同
  • 在 JavaScript 中比较表单中的两个数字

    当我尝试比较不同的数字时 数字发生变化 但文本部分保持不变 这只发生在较大 较小的情况下 而不会发生在 NaN 或相等的情况下 这是我的代码 function check var a document getElementById a va
  • 提交前验证表单(比检查空字段更复杂)

    我有一个包含时间输入的表单 具体来说 开放时间和结束时间 当按下提交按钮时 它会转到一个 php 页面 其中这些输入将添加到数据库中 在允许提交表单之前我想检查一些事情 例如 我想确保开始时间早于 小于 结束时间 这是表格 Opens
  • 光滑的轮播缓动示例

    我正在使用 Slick Carousel http kenwheeler github io slick http kenwheeler github io slick 但不知道如何合并不同的幻灯片切换 有人有例子可以分享吗 这是我目前拥有
  • 空 URL 哈希导致页面在 js 事件上跳转

    我有一个带有下一个和上一个按钮的照片库 如果我的某个 javascript 方法由于某种原因被破坏 那么当单击其中一个按钮时 它会向 url 添加一个哈希值 即 www google com 我知道可以给散列一个 div id 来跳转到页面
  • Window 与 Var 声明变量[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中使用 var 和不使用 var 的区别 https stackoverflow com questions 1470488 difference between using v
  • 如何在 angularjs 中修剪()字符串?

    有角度特定的方法吗 如果没有 我应该使用内置的jquery 来做到这一点吗 如果我应该使用内置的jquery 如何在不使用 的情况下访问trim 函数 或者这是必要的 编辑 是的 我知道 str trim 对不起 我需要这个才能在 IE 8
  • 如何在粘贴时获取文本区域输入字段的新值?

    我发现当我尝试从文本区域字段读取值时onpaste调用函数时 我得到字段的旧值 粘贴操作之前的值 而不是新值 粘贴操作之后的值 以下是此行为的演示 http jsfiddle net qsDnr http jsfiddle net qsDn
  • 使用 jquery 提供附加功能时菜单未正确对齐

    I need to make a mega menu similar to one as show in image below 到目前为止 我已经能够在某种程度上使其发挥作用 例如jsFiddle 在这里 http jsfiddle ne
  • FullCalendar 检查选择日是否有活动?

    我正在使用 Full Calendar js 插件 到目前为止一切顺利 但我想检查开始和结束之间的选择是否有事件 我只需要返回 true 或 false 基本上 如果日期选择中已经存在事件 我想阻止用户创建事件 var calendar c
  • Serviceworker Bug event.respondWith

    我的 serviceworker 的逻辑是 当发生获取事件时 它首先获取包含一些布尔值 而不是 event request url 的端点 并根据我正在调用的值检查该值event respondWith 对于当前的获取事件 我正在提供来自缓

随机推荐

  • 如何在 R 中导入 ical .ics 文件

    我想导入一个然而 当我尝试这样做时 sneak cal lt read delim iCal TribeEvents ics sep header FALSE stringsAsFactors FALSE strip white TRUE
  • jQuery/css:带有方形 div 的流体响应同位素网格

    我试图弄清楚是否有可能拥有具有流体同位素布局的方形 div 我有一个 4 列网格 每个 div 是容器宽度的 24 但我希望这些 div 是完美的正方形 我不知道如何实现这一点 这是一个有效的 jsfiddle 演示 http jsfidd
  • 在C中使用枚举而不声明枚举变量没有问题吗?

    我对 enum 类型变量和 int 类型变量在 C 中的工作原理有何不同感到困惑 我听说 C 中枚举类型和整数类型之间可能存在转换错误 但 C 不会 那么如果C中整型变量和枚举类型变量没有区别的话 我可以只声明枚举名称并使用它们而不声明任何
  • 我可以使用 org.reflection 使用通配符获取包类吗?

    我正在使用 Reflections reflections new Reflections com mypackage root new MethodAnnotationsScanner 但是通过这种方法 我得到了很多我不需要的包级别的注释
  • Webpack vue-loader 为单页 .vue 组件提供“意外的令牌 {”

    我主要是一名 C 后端开发人员 正在尝试学习 Vue js 我使用 Visual Studio 2017 ASP NET MVC 作为 API 一种布局 Vue js Webpack vue单页组件文件由以下方式加载vue loader a
  • $state.go 之后未调用 Ionic 控制器

    我有一个控制器 当第一次从第一个控制器打开状态时 它会从后端应用程序获取数据 它会加载数据 但是当它尝试再次打开它时 它不会加载新数据 具体方法如下 if selectedServiceID 000 state go balanceInqu
  • 使用 UIWebView+AFNetworking 时的链接如下

    我正在尝试 AFNetworking 2 0 的新功能UIKit AFNetworking扩展为UIWebView loadRequest progress success failure 到目前为止一切顺利 但是在发出初始请求后 由用户交
  • 正则表达式替换字符串末尾的“...”

    我有一个像这样的字符串 text1 python is fun 我想将多个 替换为一个 仅当它们位于字符串末尾时 我希望输出为 python is fun 所以当只有一个 时位于字符串末尾 则不会被替换 text2 python is fu
  • D3选择性变焦

    我正在研究一种带有一些附加功能的力导向图形布局 可选择的链接 节点 工具提示 鱼眼效果 以及对我的问题很重要的缩放和平移 现在 缩放效果非常好 如下所示 d3 append svg g call d3 behavior zoom on zo
  • 我可以让 gcc 在运行时计算结果为 NaN 或 inf 时告诉我吗?

    有没有办法告诉 gcc 抛出 SIGFPE 或类似的东西来响应计算结果NaN or inf在运行时 就像被零除一样 我已经尝试过 fsignaling nans标志 这似乎没有帮助 几乎所有从非 NaN 输入生成 NaN 的浮点运算或数学库
  • jooQ spring boot 多模式(读写分离)

    我想将 jooQ 与 Spring Boot 一起使用 我有主从架构 所以我想将 jooQ 与主从架构一起使用 主用于写入 从用于读取 我应该如何进行 现在我使用 pom xml 来配置 jooQ
  • 在后台启动 Flask 服务器

    我有一个烧瓶应用程序 目前正在按以下方式启动 phantom py author uruddarraju from phantom api v1 import app app run host 0 0 0 0 port 8080 debug
  • 设置全局 CURL 超时

    我正在使用专有的第 3 方 Drupal 模块 该模块通过curl 查询第 3 方服务 该服务最近有点不稳定 这使我的页面加载速度大大减慢 当我有大量流量时 我会达到 max connections 该扩展查询的信息并不重要 但它足够重要
  • 如何在 Element UI 表行中正确设置链接(应该很简单?)

    我在 Element UI 中得到了一张包含用户项目的表 由于 Element UI 不适用于 tr tr 我对如何处理这件事有点困惑 该表的目的是显示用户的项目并对其执行基本的 CRUD 操作 这意味着对于每一行 都应该显示一个唯一的 I
  • 将 YYYYMMDD 更改为 MM/DD/YYYY

    所以我的日期是 20170529 但每当我尝试将其格式化为日期时 单元格就会变成 所以通常情况下 这意味着列宽太小 但即使当我扩展列时 它也只是显示 我如何将这些转换为日期 DATEVALUE TEXT A1 0000 00 00 并将结果
  • 我们可以将变量从一个 C 程序传递到另一个 C 程序吗?

    所以我想将一个变量从一个c 程序传递到另一个c 程序 例如 main char str Hello there system program2 exe 我想用str in program2 exe 有没有办法将变量传递给另一个程序 我使用文
  • 当单元格中的文本发生变化时,如何执行函数? (谷歌文档)

    我一直在寻找一个函数 当某个单元格中的某些文本等于某些内容时 可以更改一行中所有单元格的颜色 我在这里找到了它 Google 电子表格 当单元格更改文本时更改行颜色的脚本 https stackoverflow com questions
  • 缩短字符串时 std::string::resize 和 std::string::erase 之间的区别

    当缩短一个std string基本上有两种可能性 string resize length or string erase length 鉴于我们知道字符串会变小 那么两者之间有什么区别 resize必须检查是否length gt curr
  • Xcode 7 从 XCUIElement 转换为不相关类型“String”在获取 JSON 时始终失败

    我试图从 JSON 数组中获取值 但收到错误 从 XCUIElement 进行转换 不相关的字符串总是失败 我正在使用 Xcode 7 和 iOS 9 1 我的代码如下 let url NSURL string urlAsString le
  • 如何在 Ember.js 中动态加载部分/视图/模板

    所以我有以下设置 在主页上 基于来自使用夹具数据的模型的列表显示生成器列表 现在 当单击其中一个生成器链接时 会显示一个新页面 其中包含一些根据该夹具数据动态生成的输入字段 到目前为止 一切都很完美 现在 当我更改生成器页面中的输入字段的值