Kendo-Knockout:调用一个方法,通过网格内的数据绑定从模板更改视图模型属性,打破绑定

2023-12-01

我正在使用 RPNiemeyer 的剑道淘汰库。我有一个剑道网格,里面有剑道模板。在模板中,有一个按钮使用剔除单击绑定,该按钮调用更改 viewModel 的方法。重现步骤:

  1. 单击网格中的按钮。
  2. 调用一个方法来更改 viewModel 的属性并警告新值。
  3. 再次单击该按钮。该按钮不再起作用。

注意:如果删除更改视图模型属性的行,一切都会正常工作。

请解释为什么这不起作用的原因,任何想法和解决方案将不胜感激。谢谢你!

html:

<div id="grid"  data-bind="kendoGrid: { data: fruits, columns: [ 
            {
                field: 'name',
                title: 'Fruit',
                width: 50
            },
            {
                template: '<button class=\'k-button\' data-bind=\'click: function() { changeFruit() }\' >Change Fruit Name</button>',
                width: 30
            }               

         ], 
        scrollable: false, sortable: true, pageable: false }" style="height: 380px">
    </div>

javascript:

var ViewModel = function() {
    this.fruit1 = {
        color: ko.observable("green"),
        name: ko.observable("apple"),
    };

    this.fruit2 = {
        color: ko.observable("orange"),
        name: ko.observable("orange"),
    };


    this.fruits = ko.observableArray([
        this.fruit1, 
        this.fruit2
    ]);

    this.changeFruit = function() {
        // this line breaks the binding, 
        // when You change the property of the viewModel
        // You cannot call this function any more
        this.fruits()[0].name("Test");
        alert(this.fruits()[0].name());
    }
};

ko.applyBindings(new ViewModel());​

http://jsfiddle.net/hXn7e/25/


目前不完全支持在网格内使用 Knockout 模板。现在您的行已绑定,因为当 Knockout 首次传递文档以应用绑定时,元素就在那里。

数据更新后,行将重新呈现,并且绑定将丢失。

一种解决方法是使用重新绑定表的“dataBound”事件的事件处理程序。这可以在全球范围内完成,例如:

ko.bindingHandlers.kendoGrid.options.dataBound = function(data) {
    var body = this.element.find("tbody")[0];

    if (body) {
       ko.applyBindings(ko.dataFor(body), body);   
    }
};

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

我还添加了一个自定义绑定,以防止 Knockout 在第一次传递时绑定表,这样它就不会绑定两次(一次是整体 applyBindings,一次是来自 dataBound 处理程序)。

最终,这是我想在 Knockout-Kendo 中更好地支持的事情,也是我计划与库合作的下一步工作。

以下是我不久前启动的一个分支的示例:http://jsfiddle.net/rniemeyer/xBL2B/

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

Kendo-Knockout:调用一个方法,通过网格内的数据绑定从模板更改视图模型属性,打破绑定 的相关文章

  • 使用 Knockout 使用多个字段/列和控件来过滤 ViewModel 数据

    我是 KnockoutJS 的新手 但到目前为止我很喜欢它 我想做的是使用表单上的多个字段 列和控件来过滤我的视图模型的数据 但我不知道该怎么做 让我 希望 进一步解释一下 我有一个 viewmodel 可观察的数据数组 其中填充了来自后端
  • 根据列值将剑道网格中的行变灰

    我有一个 Kendo 网格 其值根据调用后填充 如果其中一列的值为 已注册 我需要将整行灰显 我们有办法实现这一目标吗 添加一个处理函数onDataBound 事件 http demos telerik com kendo ui grid
  • 敲除映射导致堆栈溢出

    我正在尝试淘汰赛和映射插件 并想知道为什么这不起作用 我有一个要使用映射扩展加载的视图模型 function todoListViewModel data ko mapping fromJSON data todos TodoItem op
  • 数组的淘汰赛数组

    传入的数据是这样的 1 2 3 4 5 6 有时是这样的 1 2 4 5 这是 HTML
  • 淘汰赛绑定,每个都可进行自定义

    我这里有一个情况 用于淘汰每个带有定制的绑定 这是我的代码 div div table tbody tr td td td td tr tbody table div div
  • 角度剑道下拉

    我正在对许多组件使用 Angular kendo ui 但遇到了一个我似乎无法解决的问题 我有以下角度选择 它工作正常并将所选值正确绑定到 ng model
  • Knockout JS - 如何正确绑定 observableArray

    请看一下这个例子 http jsfiddle net LdeWK 2 http jsfiddle net LdeWK 2 我想知道如何绑定可观察数组的值 我知道上面例子中的问题 就是这一行 p Editing Fruit p
  • Kendo Grid 内联编辑中的多选列表

    我需要在剑道网格 内联编辑 中使用多选列表 以便用户可以从每行列表中选择多个值 以下是我的要求 显示时 剑道网格应显示所有选定值的逗号分隔列表 添加时 剑道网格应显示多选列表并允许选择多个值 编辑时 剑道网格应显示具有已选择值的多选列表 用
  • Kendo UI 日历多选

    您好 有没有办法让 kendodatepicker 允许多选 那么选择多个日期并让它们全部突出显示吗 更新 08 2016 你可以用我的plugin https www npmjs com package kendo multi date
  • 过滤表内容

    我正在寻找实现一个绑定来搜索 HTML 表 我考虑过实现自定义绑定并利用 jQuery 来完成繁重的工作 自定义绑定方面是为了使其在我的解决方案中普遍可访问 我当前的解决方案仅由 jQuery 组成 不使用任何 KnockoutJS 功能
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • MVVM 在 ASP.NET MVC 4 Web 应用程序中扮演什么角色?

    当我正在阅读 ASP NET MVC 4 这本书时 我对 MVVM 感到好奇 我开始谷歌搜索 找不到任何关于使用 MVVM 开发 Web 应用程序的书籍 所以我一定在这里遗漏了一些信息 据我了解 MVVM是通过knockout js和其他框
  • Mvvm 支持自定义 Kendo ui 小部件

    前几天我问this https stackoverflow com questions 24828905 developing custom kendo ui widget问题并得到了一个非常酷的答案 以后我想知道我是否可以使用我的自定义小
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da
  • 淘汰赛应用程序的性能调整 - 改进响应时间的指南

    我有一个大型 复杂的页面 严重依赖于 Knockout js 性能开始成为一个问题 但检查调用堆栈并试图找到瓶颈是一个真正的挑战 我在另一个问题中注意到 Knockout js 理解 foreach 和 with https stackov
  • 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
  • 淘汰foreach绑定无序列表

    首先 圣诞快乐 希望圣诞节那天没有其他人在工作 除非他们是出色的专家并且真的很想帮助我 我正在使用神话般的jQuery 列导航插件 http code google com p jquery column navigation 以多列方式向
  • Knockout.js ViewModel 更改回调?

    我正在尝试在 Knockout js 应用程序中实现自动保存功能 有没有办法在 ViewModel 发生变化时分配回调 看看 Ryan Niemeyer 的聪明但肮脏的旗帜 http www knockmeout net 2011 05 c
  • 如何使用 ASP.NET MVC 在 Kendo UI Grid 中实现 N 级嵌套层次结构

    我正在尝试使用 ASP NET MVC 在 Kendo UI Grid 中实现 N 级嵌套层次结构 我可以实现特定数量的嵌套网格 但如何在 asp net MVC 中使用特定数据实现 N 级嵌套网格 Html Kendo Grid

随机推荐

  • 清理 PHP/SQL $_POST、$_GET 等...?

    好吧 这个主题是一个温床 我明白这一点 我还了解这种情况取决于您使用的代码 我有三种情况需要解决 我有一个表格 我们需要允许人们使用逗号 波形符等发表评论和声明 但仍然免受攻击 我有人用英语输入这样的日期 10 13 11 mm dd yy
  • 安装 UWP,无需开发者模式和旁加载

    在非商店的win10 UWP中 安装应用程序应打开开发者模式或侧载模式 然而 我公司的安全级别很高 我无法更改目标笔记本的任何设置 具体来说 这些笔记本在更新和安全方面甚至不 适合开发人员 我的工作是使用 UWP 为公司创建一个自动 wif
  • Google Earth Engine 中带有 map() 函数的双循环

    In Google 地球引擎开发人员指南 有一个建议要避免for 循环 他们建议使用map 函数如本例所示 to avoid var clientList for var i 0 i lt 8 i clientList push i 1 p
  • 如果用户禁用了应用程序的推送,是否可以实现无声远程通知?

    在我的设置选项卡中 我有一个特定功能的开关 可以根据 API 响应关闭或打开 在网站上 只有管理员有权打开 关闭 我可以每次在设置点击时进行 user API 调用来检查用户的当前设置 但有几个缺点 例如如果用户已经在设置中 则它不会更新
  • 使用 pyspark 进行条件聚合

    考虑以下作为数据框 a b c d e africa 123 1 10 121 2 africa 123 1 10 321 98 africa 123 2 12 43 92 africa 124 2 12 43 92 usa 121 1 1
  • 仅运行最后一个任务!

    我迫切希望找到解决问题的方法 以下是为中的每个项目生成不同任务的代码List
  • 如何在android中获得相机的权限。(特别是Marshmallow)

    嘿 我正在 android studio 中设计一个应用程序 其中我需要相机的许可 我已经包括了
  • GWT div aria-hidden 不隐藏在 IE 中

    我用 GWT 编写了我的登陆页面 在 IE 中 我在其末尾看到了这个空带 我将其涂成绿色 以便您可以看到它 这只发生在 IE 中 我正在使用 IE9 进行测试 Chrome 中不行 Firefox 中不行 Safari 中不行 查看 DOM
  • 按后退按钮后文档已过期

    我有一个名为 a php 的页面 它有一个表单并通过 POST 将数据提交到同一文件 a php 页面加载时没有错误 然后我单击该页面上的任何链接 b php 或 b html 它像往常一样定向到任何页面 然后 当我单击 b php 或 b
  • nodejs child_process exec 'java -version'

    嘿 我正在 nodejs shell 中运行以下代码 exec require child process exec 现在我有 exec var 作为函数 然后我跑 exec java function error stdout stder
  • StorageEvent 在 Excel for Windows 中不起作用

    正如一些现有线程所建议的 例如 one two three 当前的对话框不提供API发送经常消息从主页 例如任务窗格 发送到对话框 所以我必须寻找解决方法 我们保留一个变量message in localStorage 然后我们使对话框选中
  • 空白CSS属性正在给flex带来问题[重复]

    这个问题在这里已经有答案了 我面临的问题是white space nowrap当有弹性容器时 有一个弹性container with flex direction row 其中有两个divsidebar使用设置一定的宽度flex 0 0 7
  • 压缩包含合并提交的前几十个 git 提交

    我有一个具有 root 权限的现有存储库R 然后是几十次提交 包括多次合并 最多X 然后线性历史直至Y 我想压碎一切R to X进入单个提交并强制推送它 我怎样才能做到这一点而不需要花费大量精力重新解决合并问题 或者 这个问题可以表述为更改
  • 使用 pandas 对 Python 中多个数据文件的数据进行平均

    我有 30 个 csv 数据文件 来自我运行的实验的 30 次重复运行 我正在使用熊猫read csv 函数将数据读入 DataFrame 列表 我想从此列表中创建一个 DataFrame 其中包含每列 30 个 DataFrame 的平均
  • 如何在画布中创建撤消功能?

    我有一个 HTML5 画布绘图板 我想创建一个具有撤消功能的按钮 我该怎么做 我的想法是拥有一个数组堆栈 每当您绘制并释放鼠标时 它都会通过推送将画布图像保存到撤消数组堆栈中 但当我尝试时 它并没有真正起作用 有更好的主意吗 先感谢您 va
  • SONAR 问题 - 关闭此 FileInputStream

    如何解决这个 SONAR 问题 关闭此 FileInputStream 提前致谢 File billFile new File filePath try BufferedReader br new BufferedReader new In
  • Angular 2 从外部数据引导应用程序

    如何仅在获取外部数据后加载 Angular 2 应用程序 例如 同一个 html 页面上有外部应用程序 我需要将一些数据传递到我的应用程序服务 想象一下 这就是API URL like some host api 在获取此信息之前 我的应用
  • 如何在jquery中迭代json数据

    如何在jquery中迭代json数据 id 856 name India id 1035 name Chennai id 1048 name Delhi id 1113 name Lucknow id 1114 name Bangalore
  • 具有动态 localName 值的 JacksonXmlRootElement

    我正在更新一个POJO我们映射到XML唯一的区别是有人想要旧的XML还有一些新的 唯一的区别是根包装器名称 所有相同的字段 例如当前根 Xml 标记设置为ExistingName他们想要一个新的值 比如BrandNewName具有所有相同的
  • Kendo-Knockout:调用一个方法,通过网格内的数据绑定从模板更改视图模型属性,打破绑定

    我正在使用 RPNiemeyer 的剑道淘汰库 我有一个剑道网格 里面有剑道模板 在模板中 有一个按钮使用剔除单击绑定 该按钮调用更改 viewModel 的方法 重现步骤 单击网格中的按钮 调用一个方法来更改 viewModel 的属性并