Knockout js 大量自定义绑定

2024-04-05

在绑定不存在的情况下,处理大量自定义绑定的好方法是什么? 假设我的 html 表达式绑定到 image_url ,如下所示。

<span title="Company Logo" data-bind="image_url: company_banner"></span>

然而,image_url 绑定很可能不可用。 在这种情况下,我只想返回 company_banner 的字符串值。

通常情况下,人们会添加一个如下所示的自定义处理程序,但如果该处理程序不可用,我们可以返回一些通用反馈吗?

ko.bindingHandlers.buttonLabel = {//update etc}

在我们的例子中,设计可能领先于代码,所以我们不希望 ko 抱怨。


对于这种情况,我会考虑使用自定义绑定提供程序。这是一篇描述功能的文章:http://www.knockmeout.net/2011/09/ko-13-preview-part-2-custom-binding.html http://www.knockmeout.net/2011/09/ko-13-preview-part-2-custom-binding.html.

因此,我将创建一个自定义绑定提供程序,它是真正绑定提供程序的包装器。解析绑定后,我们可以检查它们以查看它们是否存在于ko.bindingHandlers。如果没有,那么我们可以添加一个带有其值的文本绑定。

它可能看起来像:

ko.lenientBindingProvider = function() {
   var realBindingProvider = new ko.bindingProvider();

   this.nodeHasBindings = realBindingProvider.nodeHasBindings;

   this.getBindings = function(node, bindingContext) {
       //parse the bindings with the real binding provider
       var result = realBindingProvider.getBindings(node, bindingContext);

       //inspect the returned bindings
       for (var binding in result) {
           if (result.hasOwnProperty(binding) && binding !== "_ko_property_writers" && !ko.bindingHandlers[binding]) {
                //add a text binding with whatever the missing binding was bound against
                result.text = result[binding];
           } 
       }

       return result;  
   };
};

ko.bindingProvider.instance = new ko.lenientBindingProvider();

这是一个示例:http://jsfiddle.net/rniemeyer/mMQKY/ http://jsfiddle.net/rniemeyer/mMQKY/

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

Knockout js 大量自定义绑定 的相关文章

  • jquery .html() 追加后绑定不起作用

    我有这个简单的 div div div 它是空的 现在我正在尝试附加这个HTML到上面的div div div
  • Knockback.js 生产准备好了吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何让 ko.compated 处理对象内的可观察值

    我有一个相当简单的视图模型来保存数据数组并获取一个我想用来过滤数据的字符串 我有一些非常简单的标记来渲染它 如下所示 section class task list ul li li ul section
  • 如何将复选框绑定到值的倒数?

    我有一个情况 当我需要将一个复选框和另一个 DOM 元素的可见性绑定到我的 viewModel 的布尔属性的逆时
  • 如何在knockout视图模型点击事件中访问$parent或$parents[]?

    我遇到了一种情况 我想通知祖父母或 parents 1 子视图模型中发生的点击事件 所以基本上我希望能够做到这一点 self parents 1 actionTaken 我认为这不起作用 因为绑定上下文与 viewModel 但我想听听是否
  • Knockout ObservableArray 不更新 HTML Foreach

    所以我有一个可以正常工作的 observablearray 但 UI 没有更新 我读过很多人遇到这种类型的问题 但我没有看到 所以 HTML 是 tbody tr td span class label label success Yup
  • Edge 中的 Javascript 仅适用于打开的 devtools

    我遇到的问题是 在 MS Edge 中 我的图像映射功能只能部分工作 它由淘汰赛 FW 提供动力 在更大的图像映射上 它不会将整个图像映射注册到视图模型中 因此 图像映射的所有悬停效果和单击样式都会停止工作 然而 这只是大图像地图的问题 还
  • Knockout.js——理解 foreach 和 with

    我一直在阅读 learn knockout js 教程并进行实验 有人可以解释为什么这有效吗 教程 单页应用程序 步骤 2 使用with chosenFolderData and foreach mails table class mail
  • 如何在服务器中处理用于发布目的的日期

    我从 ASP NET MVC 获得了这个值 Date 1446393600000 它在 SQL 数据库中的值是 2015 11 02 这是一个date 仅限日期 并将其作为 javascript 对象进行操作 我使用moment js ht
  • KnockoutJS 中的最大值和数值验证

    如何实现最大值验证并检查可观察值是否为数字 例如 self MyInteger ko observable extend numeric 2 extend maxValue params 255 message MyInteger cann
  • 输入按键的淘汰赛事件绑定会导致奇怪的行为

    长话短说 我希望用户能够在输入元素上按 Enter 键 并调用我的视图模型中的某些方法 这是我的 html 输入
  • Hasfocus 与 Firefox 的绑定问题

    我正在开发一个应用程序 它利用可观察数组来呈现可编辑的用户 ID 信息表 该应用程序在 Chrome 中运行得非常好 但在 Firefox 中运行时遇到问题 就我的目的而言 这两个浏览器是我目前唯一关心的 我通过以下方式使用 单击编辑 功能
  • MVVM 在 ASP.NET MVC 4 Web 应用程序中扮演什么角色?

    当我正在阅读 ASP NET MVC 4 这本书时 我对 MVVM 感到好奇 我开始谷歌搜索 找不到任何关于使用 MVVM 开发 Web 应用程序的书籍 所以我一定在这里遗漏了一些信息 据我了解 MVVM是通过knockout js和其他框
  • 有没有办法一次性禁用一堆表单元素?

    我想根据某些条件禁用 HTML 表单元素的一部分 这似乎是执行此操作的理想方法 fieldset fieldset
  • Breeze.js 查询不更新淘汰赛视图

    我正在通过 Breeze js 查询数据 第一次运行良好 第二次视图未更新 html a Order by Newest a a Order by Score a div ul li strong span span strong span
  • 如何使用离线存储和 Knockout.js 实现 MVVM?

    我可以使用 Knockout js 实现 Mvvm 但我想将它与跨浏览器 FF 和 Chrome 支持的 Html 5 离线存储一起使用 我想将 html 对象绑定到离线存储 我没试过 但是有一个knockout localStorage
  • 淘汰赛,内容可编辑(和降价)

    使用由 markdown 字符串支持的 Knockout 绑定处理程序并进行渲染 使用 markdown js 和内置的 html 绑定处理程序 工作正常 但尝试添加内容可编辑行为 并且在可观察值未在模糊时更新或仅使用删除了所有降价格式的文
  • 禁用淘汰排序中的单个项目

    在淘汰赛排序中 我知道您可以使用禁用可排序列表isEnabled in the sortable捆绑 我还知道您可以使用禁用移动项目cancelDrop in a beforeMove功能 问题是 isEnabled禁用整个列表 并且can
  • 首选的客户端路由解决方案? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Knockout 如何将对象绑定到复选框和单选框

    参考here http jsfiddle net SimonYong kf6U8 2 如何将对象 没有可观察的 绑定到复选框和单选值中 以便我得到的值 值和值 是一个普通对象 没有可观察的 HTML Selection List a cla

随机推荐