使用knockoutjs虚拟元素动态创建html部分

2024-02-09

我试图将“虚拟元素”与 html 绑定一起使用来动态创建 html 部分,但失败并显示消息:“绑定‘html’不能与虚拟元素一起使用”。这是jsfiddle:http://jsfiddle.net/d3Dpp/ http://jsfiddle.net/d3Dpp/.

有人知道是否有任何解决方法?


基于Artem的代码和KnockoutJS 2.2.1,这是一个改进版本:

http://jsfiddle.net/YZzDe/2/ http://jsfiddle.net/YZzDe/2/

改进:

  1. 更少的代码,更少的重复(连接到公开的接口)
  2. 覆盖“html”绑定,因此基本上旧的“html”现在可以在虚拟中使用
  3. 不再有全局函数。

这是代码

{
    var overridden = ko.bindingHandlers['html'].update;

    ko.bindingHandlers['html'].update = function (element, valueAccessor) {
        if (element.nodeType === 8) {
            var html = ko.utils.unwrapObservable(valueAccessor());

            ko.virtualElements.emptyNode(element);
            if ((html !== null) && (html !== undefined)) {
                if (typeof html !== 'string') {
                    html = html.toString();
                }

                var parsedNodes = ko.utils.parseHtmlFragment(html);
                if (parsedNodes) {
                   var endCommentNode = element.nextSibling;
                   for (var i = 0, j = parsedNodes.length; i < j; i++)
                      endCommentNode.parentNode.insertBefore(parsedNodes[i], endCommentNode);
                }
            }
        } else { // plain node
            overridden(element, valueAccessor);
        }
    };
}
ko.virtualElements.allowedBindings['html'] = true;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用knockoutjs虚拟元素动态创建html部分 的相关文章

随机推荐

  • 以编程方式确定图像的人类可读颜色(例如红色、绿色等)

    我正在尝试编写一个脚本 该脚本将以编程方式运行图像并告诉我它的原色 目前该脚本获取每个像素的 RGB 值 将它们与预定义的规则进行比较 并尝试计算每种颜色的像素数 我的问题是剧本有点碰运气 有谁知道更好的方法 也许使用更容易翻译成英语的不同
  • 将 IANA/Olson 时区数据库映射到缩写(如 EST、PST 等)

    我需要将 IANA Olson 时区 ID 映射到缩写 例如 EST PST 等 我知道这不是一对一的映射 例如 对于 EST 有相当多的 IANA 时区 我可以使用某种数据库 映射来实现此目的吗 PS JavaScript 解决方案是更好
  • ExtJs 如何滚动到网格底部?

    我正在使用 extjs 制作一个基于网络的日志查看器 我希望将新的日志行添加到我的 gridview 的底部 因为它不需要排序将其移动到网格的顶部 加上我的同事更喜欢它 从而节省了 cpu 我的问题是 理想情况下 添加新行后网格会滚动到底部
  • React Router (Dom) v4 在输入回车键时重定向到不同的路由

    当用户在输入字段中按 Enter 时 我尝试重定向到新路线 我有一个标题和搜索组件 我想在每个页面上呈现它 我发现了使用重定向组件 withRouter 组件 使用上下文以及可能将历史对象传递到我的搜索组件 输入字段所在的位置 的不同用例
  • 替换字符串中的字符

    我正在尝试创建一个字符串 用 替换所有空格 但我不知道具体该怎么做 有人可以帮忙吗 String phrase new String This is a String test 假设它是Java 你可以使用字符串替换 http downlo
  • 如何禁用 MFC 中的最大化按钮?

    如何禁用 SDI 应用程序中的最大化按钮 功能 为了完整性 int CMainFrame OnCreate LPCREATESTRUCT lpCreateStruct ModifyStyle WS MAXIMIZEBOX 0
  • 使用数据库中的配置初始化应用程序组件

    我正在构建一个 Yii2 应用程序 通过swiftmailer 扩展 https github com yiisoft yii2 swiftmailer 我将电子邮件设置 smtp ssl 用户名等 存储在数据库表中 以便能够使用适当的视图
  • 同一服务器上的两个 Laravel 项目导致冲突

    我在同一台服务器上有两个 Laravel 5 1 项目 在单个项目上操作不会给我带来任何麻烦 但是如果我在两个浏览器选项卡上打开两个项目并在它们之间交替 我会收到 服务器遇到内部错误或配置错误 无法完成您的请求 进行了研究 发现服务器正在记
  • ORM 和逻辑删除

    任何可用的 ORM 是否支持使用位字段来表示行删除 更多信息 使用 C 工作 我需要删除这种方式来支持将远程数据库更改同步到中央数据库 我正在寻找一种可能的 ORM 但也对解决该问题的方法感兴趣 因此 如果有人知道任何语言 环境中的任何 O
  • 类型错误:io.connect 不是一个函数

    我正在遵循使用 Node js 和 socket io 的简单多人游戏的教程 http rawkes com articles creating a real time multiplayer game with websockets an
  • 如何运行包生成的jar(可能与lib下的其他jar一起运行)?

    我怎样才能跑 jarsbt生成的文件package 我创建了一个非常简单的例子 scala source package org pack class ScalaParser files Array String def doAll pri
  • 为什么有四个 Mono C# 编译器?

    这一页 http www mono project com CSharp解释了四种不同的 mono 编译器 mcs gmcs smcs dmcs 对我来说 拥有四个 C 编译器有点奇怪 通常 新版本的编译器会保持向后兼容性 我认为这是因为运
  • 需要了解 Git/Gerrit 命令(获取和推送)

    我正在遵循我们 IT 部门的一个示例 我想了解这个命令到底在做什么 git fetch origin refs changes refs remotes origin changes 为了提供一些参考框架 这是持续集成 CI 工具的一部分
  • ASP 中的“~/”解析为什么:当前文件夹还是网站的根目录?

    在文件路径中使用 是否解析为当前文件夹或网站的根目录 我有这样的文件结构 gt Folder gt Page1 Aspx gt App Themes gt Theme1 gt Images gt StyleSheet css gt Incl
  • 根据同时在另一个字段中输入的内容自动填充字段

    我试图弄清楚如何根据使用 javascript 在另一个输入字段中输入的内容自动填充输入值 这是我的代码
  • 是否有使用 Kohana 进行用户注册和登录身份验证的示例项目?

    我想制作一个网络应用程序 平台 它可以做非常简单的事情 用户可以注册 获得帐户 然后登录到平台 我已经安装了 Kohana 如果有一个轻量级的演示项目可以利用这些东西来看看它是如何完成的 那就太酷了 有没有好的可用的 Gallery3 测试
  • 使用带有注入承诺的 ngRoute 'resolve' 参数

    我已经配置了resolve返回 Promise 的多个路由的参数 以便延迟控制器的实例化 直到 Promise 得到解决 目前我使用函数符号 而不是指定要注入的字符串 例如 when article id templateUrl app a
  • 从程序集中公开不同的类型名称(别名)

    这个问题与一个相关我之前未回答的问题 https stackoverflow com q 22097706 409279 因为我仍在解决同样的问题 但这是一种不同的方法 我目前正在 C NET 项目中使用第三方 SOAP Web 服务 不幸
  • 使用 OR 运算符的 IIF 查询不起作用

    我正在尝试在 MS Access 查询中运行以下内容作为条件 基本上我想做的是 如果 checkbox True 则显示所有记录 包括那些空白或空字段的记录 我的表单组合框 combo9 中的默认值为 如果 checkbox False 则
  • 使用knockoutjs虚拟元素动态创建html部分

    我试图将 虚拟元素 与 html 绑定一起使用来动态创建 html 部分 但失败并显示消息 绑定 html 不能与虚拟元素一起使用 这是jsfiddle http jsfiddle net d3Dpp http jsfiddle net d