SELECT、foreach 选项中的 knockoutjs 无容器模板不适用于 Internet Explorer

2023-12-08

我有一个测验/调查应用程序,但在使用 knockoutjs 填充下拉列表时遇到问题。

请用 Firefox(或 Chrome)检查这个小提琴,然后用 Internet Explorer 9(或 IE8、或 IE7...knockout 说与 IE6+ 兼容,但显然 IE 在我的场景中出现了一些问题)尝试。

在 Firefox 和 Chrome 中我的 jsfiddle 示例可以,但不适用于 Internet Explorer。请参阅第 1 章的最后一个问题“你住在哪里?”在选项卡 2 中,“最喜欢的运动?”。 IE 中未填充下拉列表。

我怀疑 $parent 的某些功能不能正常工作,或者 IE 无法理解 $parent.ParticipantAnswer == null 。我尝试调试但显然没有找到原因,所以我在这里。

在 tab1 和 tab2 中,选项均未填充,因此这里调用这两个模板的代码:

<!-- ko if: AnswerTypeId == 2 -->
<select data-bind="attr: { name: Id, id: 'answerq' + Id }">
<option value="0"></option>
<!-- ko template: { name: 'option-template', foreach: Answers } -->                                                        
<!-- /ko -->
</select>
<!-- /ko -->

<!-- ko if: AnswerTypeId == 6 -->
<select data-bind="attr: { name: Id, id: 'answerq' + Id }">
    <option value="0"></option>
    <!-- ko template: { name: 'location-template', foreach: Answers } -->                                                        
    <!-- /ko -->
</select>
<!-- /ko -->

这里有 2 个模板:

<script type="text/html" id="option-template">

    <!-- ko if: $parent.ParticipantAnswer != null && $parent.ParticipantAnswer.AnswerId == $data.Id -->
    <option data-bind="text: Description, attr: { value: Id, selected: 'selected' }"></option>
    <!-- /ko -->

    <!-- ko if: ($parent.ParticipantAnswer == null || $parent.ParticipantAnswer.AnswerId != $data.Id) -->
    <option data-bind="text: Description, attr: { value: Id }"></option>
    <!-- /ko -->

</script>

<script type="text/html" id="location-template">

    <!-- ko if: $parent.ParticipantAnswer != null && $parent.ParticipantAnswer.AnswerInt == $data.Id -->
    <option data-bind="text: Description, attr: { value: Id, selected: 'selected' }"></option>
    <!-- /ko -->

    <!-- ko if: ($parent.ParticipantAnswer == null || $parent.ParticipantAnswer.AnswerInt != $data.Id) -->
    <option data-bind="text: Description, attr: { value: Id }"></option>
    <!-- /ko -->              

</script>

我认为无容器模板会产生问题,但是这个jsfiddle适用于 Firefox 和 IE。

我真的不知道为什么它不适用于 IE,我在这里请求有效的修复,也许还需要解释原因,这样我们都可以从中学习;)谢谢。


一般来说,无容器绑定在 Internet Explorer 中运行良好。但是,IE(至少在 10 之前)会在某些情况下删除注释,例如在select元素。

因此,KO 永远不会看到这些评论,也没有机会处理它们。你最好的选择之一是使用repeat捆绑:https://github.com/mbest/knockout-repeat。这基本上会让你做一个foreach通过附加到要重复的元素而不是容器。

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

SELECT、foreach 选项中的 knockoutjs 无容器模板不适用于 Internet Explorer 的相关文章

  • 显示来自 mongodb 的所有数据并在 doT.js 模板引擎中渲染它

    我想从 mongodb 中提取数据并将其传递给视图 一切似乎都正常 但我没有看到所有 10000 条记录都显示出来 而是只看到了一条 我觉得我非常接近解决它 但我陷入困境 我正在使用node mongodb native express和d
  • 更改模板标签 <# {% {{ 等后,John Resig 的微模板出现语法错误

    我在使用 John Resig 的 Micro 模板时遇到了一些麻烦 谁能帮我解释为什么它不起作用 这是模板 以及发动机的改装部分 str replace r t n g split join t replace gt t g 1 r re
  • 如何防止 Internet Explorer 连接超时?

    如果网站处理和加载页面的时间超过 10 秒 Internet Explorer将做一个connection timeout 用户可以通过将注册表中的默认值设置为更高的值来防止这种情况发生 但我真的不能告诉我的任何客户这样做 所以我如何首先防
  • .NET WebBrowser 控件可以使用 IE9 吗?

    我意识到这是一个早期版本并且不稳定 我不会梦想在任何其他项目中将默认的 Web 浏览器控件替换为 IE9 但在这种情况下 我特别需要 IE9 与其他版本进行比较 我想让 NET WebBrowser 控件使用 IE9 而不是机器上默认版本的
  • 为什么 Internet Explorer 复选框接受双击但仅更改状态一次?

    在 Internet Explorer 任何版本 中 如果您快速单击复选框两次 它只会更改一次 其他浏览器不这样做 这是 设计使然 还是一个非常奇怪的行为 错误 当我在许多不同的公司担任系统管理员时 我经常看到人们使用双击作为默认操作来与任
  • IE 中的 HR 标签 - 删除边框

    在除 IE7 及更低版本之外的其他浏览器中 hr 在 hr 标签周围显示边框 但我不希望它出现 我已经尝试过这个解决方案 但它周围似乎仍然有边框 它看起来像这样 我该如何摆脱它 See http webdesign about com od
  • 此页面上的脚本导致 ie 运行缓慢

    问题就在标题中 IE 行为异常 并说有一个脚本运行缓慢 FF 和 Chrome 没有这个问题 我怎样才能找到问题所在 那个页面有很多JS 手动检查不是一个好主意 EDIT 这是我正在处理的一个项目的页面 但我需要一个工具来查找问题 End
  • Internet Explorer 8 事件因透明父母而失败

    例如 当您有一个透明的 div 并单击 in 时 该单击会直接传递到下面的元素 这种行为在其他现代浏览器中并不存在 而且我确信这也不符合 W3C 的建议 最后 它打乱了我的设计 有什么办法可以解决这个问题吗 说明 透明 例如没有定义背景颜色
  • Knockout.js - 数据绑定文本默认值

    在 knockout js 中 我有一个非常标准的字段 如下所示
  • Internet Explorer 和 Firefox 上的 YouTube IFrame API

    更多的是 答案 而不是 问题 但在其他地方没有找到这个 所以我将其发布在这里 我在所有版本的 IE 和 Firefox 中初始化 iFrame API 时遇到困难 需要进行一些自定义实现 基本上 它会加载 API 但不会创建玩家对象 经过一
  • IE localStorage 事件失火

    在 Internet Explorer 9 和 10 中 localStorage 实现意外地触发事件 这里有很棒的线索 Chrome 的 localStorage 实现存在错误 https stackoverflow com questi
  • Internet Explorer - 浏览时出现奇怪的形状

    基本上 无论我使用 IE 访问哪个网站 我都可以看到那些黑白形状 一旦我将鼠标移到它们上面 它们就消失了 想知道是否有人知道什么可能导致这种情况 Also http imageshack com a img674 3926 GaSSxT j
  • 淘汰赛:自定义绑定处理程序上的 valueAccessor 与 viewModel?

    通过绑定属性 通过 valueAccessor 访问视图模型的值与从传递给处理程序的 init 和 update 的 viewModel 参数获取它们之间有什么区别 我一直认为答案是那些链接到 valueAccessor 的模型属性会自动设
  • 支持 IE 中的“border-radius”

    有谁知道 Internet Explorer 是否 何时支持 border radius CSS 属性 是的 2011 年 1 月 IE9 发布时 假设您希望所有四个边均为 15px myclass border style solid b
  • Internet Explorer 11 不会在网站上设置 cookie

    由于某种原因 IE11 仅限 IE11 与其他 IE9 和 IE10 一起测试 不会在我一直在处理的网站上创建会话 因此 这意味着网站登录等基本功能将无法使用 在其他浏览器上 这工作得很好 我研究了一下 发现 IE 不能与带下划线的域一起使
  • 如何在不同位置显示验证错误消息?

    我在用knockout js knockout validation插件 我正在添加示例小提琴 http jsfiddle net hsnCW 1 http jsfiddle net hsnCW 1 在此示例中 对数组进行了自定义验证以检查
  • Knockout JS - 如何正确绑定 observableArray

    请看一下这个例子 http jsfiddle net LdeWK 2 http jsfiddle net LdeWK 2 我想知道如何绑定可观察数组的值 我知道上面例子中的问题 就是这一行 p Editing Fruit p
  • 导航时 Internet Explorer 9 中的图像闪烁白色

    我正在使用 XHTML 1 1 CSS 3 0 开发一个网站 但 Internet Explorer 9 出现问题 每次我将页面从 主页 更改为 功能 时 各种图像在填充之前都会闪烁 白色 出现这种 白色闪烁 每次页面更改时 我见过很多堆栈
  • CSS3 变换:IE 中的缩放

    我想使用CSS3属性transform scale div transform scale 0 5 0 5 有没有办法在 Internet Explorer 8 及更低版本中模仿这个 可能与filter或者 JavaScript 解决方案
  • Internet Explorer 中的 AJAX 问题

    这在 FF safari chrome 和 opera 中工作得很好 但在 IE 中却不行 错误代码是403 var datau trends php 3Frastgele 3D33 ajax type GET url loader php

随机推荐

  • 您的应用包含非公开 API 使用

    我正在尝试在 App Store 上提交我的应用程序 但收到以下消息 Your app contains non public API usage Please review the errors correct them and resu
  • 使用 commons-email-1.3 发送电子邮件时出错

    在使用 commons email 1 3 发送电子邮件时 我收到以下错误 我已经下载了外部 jar 并将其添加到项目中 请帮我解决这个问题 package mypkg import org apache commons mail Defa
  • 具有滑动功能的 3 级可扩展列表视图

    我正在创建 3 级可扩展列表 并在第三级具有滑动功能 当使用缓存时 我在第三级 swipelistview 中遇到滑动功能的问题 对于滑动 我使用 47deg android swipelistview https github com 4
  • 从 XML feed 更新 MySQL 记录的最佳方法

    我正在考虑最好的方法 如何从 XML feed 更新表 MySQL 中的记录 我有数据库 该数据库包含来自多个销售门户的每日报价 所以现在 大约午夜我正在从表中删除所有记录 因为我认为从表中删除所有内容比将当前数据与插入的数据进行比较更好
  • Google Cloud ML FAILED_PRECONDITION

    我正在尝试使用 Google Cloud ML 托管 Tensorflow 模型并获取预测 我有一个预训练模型 已上传到云端 并在 Cloud ML 控制台中创建了模型和版本 我按照说明进行操作从这里准备我的数据以请求在线预测 对于 Pyt
  • 如果函数执行时间太长,iPhone 会超时吗?

    我有一个函数 可以使用 cocoa 的 Url 对象从网络获取外部资源 它在模拟器上工作正常 但偶尔在设备本身上失败 这是一个谷歌查询 所以资源显然确实存在 这让我相信硬件上存在一些内部超时障碍 但没有读到这样的障碍是否存在 还有其他人遇到
  • 动态显示和隐藏 JFrame 装饰

    我正在开发一个基于 Java Swing 的应用程序 具有不同的视角 对于 主菜单 透视图 我不希望装饰窗口 JFrame 而在其他透视图中 我确实希望装饰窗口 换句话说 我需要动态更改装饰属性 我尝试过使用setUndecorated f
  • 如何将行的值换行到R中特定字符处的新行

    我有一个包含值的示例数据框 data lt structure list A c Date Values B c 2023 04 03 Heat Capacity nSpecific Heat Capacity nHeat Index ro
  • JSON、CURL 和 Google 的地理定位

    我正在尝试使用谷歌的地理定位 浏览器定位 服务 到目前为止 我认为当我尝试类似的事情时 https maps googleapis com maps api browserlocation json browser firefox sens
  • 如何在 Microsoft Azure 网站上更改 jvm 参数

    我在Azure上创建了一个基于java的网站 并在使用 自定义创建 时选择tomcat作为容器 然后准备好了一个空网站 我可以使用ftp上传WAR文件 但无法触及tomcat文件 我需要更改 JVM 的堆大小 该怎么做 请参见http az
  • 致命错误:调用未定义的函数 mcrypt_get_block_size()

    我正在将我的网站上传到服务器 并且上传成功 之后 当我运行时 它给了我这个错误 致命错误 调用未定义的函数 mcrypt get block size 我也检查我的PHP我的服务器上的版本是5 3 14 我不知道该如何处理这个问题 我使用这
  • 如何通过Javascript与Flash交互?

    目前有一个非常基本的 Flash 项目 它连接到 rtmp 服务器并从网络摄像头传输视频和音频 它从具有特定名称的用户创建流 此外 在同一项目中 还有其他实体可以流式传输的流名称的输入 因此 您可以通过 Flash 进行类似于 Skype
  • 在客户端上找不到 socket.io.js

    这个问题之前已经被问过 但在之前的回复中没有找到任何解决方案 Socket IO 给我带来了两个问题 服务器端给出了此错误 错误 监听 EACCES 我阅读了堆栈溢出并通过发出 sudo 命令来启动服务器来解决此问题 现在客户端似乎没有按照
  • Winform标签控件文本变化的地方

    我有一个 labelControl Text My name 结果是 My name 符号改变位置 如果我写 My name 结果是 My name 我如何阻止它改变位置 您需要设置RightToLeft属性正确 默认情况下这应该是Righ
  • Python 中的 Hot Deck 插补

    我一直在尝试找到允许我替换数据框列中缺失值的 Python 代码 我的分析重点是生物统计学 因此我不习惯使用平均值 中位数 众数来替换值 我想申请 热甲板插补 方法 我无法在网上找到任何采用数据帧列并使用 Hot Deck Imputati
  • 将应用程序更新到 iPhone 的 appStore 时出现图标错误?

    我正在尝试使用应用程序加载器更新我的应用程序 当我提交存档文件时 我收到此错误 icon specified in the info plist not found under the top level app wrapper icon5
  • Mongodb 服务器启动警告

    我见过其他人有启动警告 但我似乎在这个上找不到任何内容 一些注意事项我在 Ubuntu 14 04 上运行 我的 mongo 版本是 3 0 5 我也尝试过 3 0 6 但有类似问题 我尝试停止 重新启动但无济于事 它似乎正在寻找一个不存在
  • 动态语言 IDE 中的自动补全,特别是 PyDev 中的 Python

    我是 Python 新手 具有静态类型语言 包括大量 Java 背景 在检查了功能 受欢迎程度等之后 我决定在 Eclipse 中使用 PyDev 作为 IDE 我很惊讶自动完成功能似乎无法正常工作于内置程序 例如 如果我在以下之后尝试对数
  • 在 C# 中转换日期时间格式

    如何从网络服务转换此日期时间格式 日期时间值为 timestamp 2014 04 18T14 45 00 02 00 我不想将其转换为 dd mm YYYY hh mm ss 你需要使用 yyyy MM dd T HH mm ssK 格式
  • SELECT、foreach 选项中的 knockoutjs 无容器模板不适用于 Internet Explorer

    我有一个测验 调查应用程序 但在使用 knockoutjs 填充下拉列表时遇到问题 请用 Firefox 或 Chrome 检查这个小提琴 然后用 Internet Explorer 9 或 IE8 或 IE7 knockout 说与 IE