问题标签 [custom-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
727 浏览

javascript - 淘汰赛:observableArray 的自定义绑定,仅在完成时呈现

好吧,标题可能有点混乱,所以我会解释......

我正在编写一个自定义绑定,我将向其传递一个 observableArray。这个 observableArray 是异步填充的,元素被一个一个推入。

update问题是每次 observableArray 发生突变时都会调用我的自定义绑定(方法)。这是有道理的,但在这种情况下没有帮助,因为这意味着第一个元素被渲染n次,其中n是 observableArray 的长度,第二个元素被渲染n-1次,只有第n 个元素被渲染渲染一次。

任何人都可以解释一种让自定义绑定只做某事的简洁方法

  • observableArray 已完全填充,或
  • 当添加了自定义绑定尚未呈现的元素时?

我可以想出几种方法来解决这个问题,在父视图模型上使用一个额外的属性/可观察作为一个标志,上面写着“完全填充,你可以现在渲染项目”或者每个元素上的一个属性,上面写着“你'已经渲染了我'。然而,这些都很尴尬,特别是 observableArray 中的对象也有 observableArray 属性。

对于这个问题,没有更好的 Knockout/MVVM 解决方案吗?

更新: 为了清楚起见,我正在构建的东西是这样的

在哪里

并且其中包含的元素TypeGroups是具有可观察属性的另一个视图模型的所有实例。

每次我调用TypeGroups.push(obj)自定义绑定时都会再次调用一次。

0 投票
1 回答
617 浏览

knockout.js - Knockoutjs 自定义绑定可以检测元素中 css 类的变化吗?

我在输入元素上有 KO 自定义绑定,需要它来检测该元素的 css 类是否发生了更改(或添加)。这是我使用自定义绑定检测到的东西吗?

0 投票
1 回答
669 浏览

javascript - 如何在 knockoutjs 上的单击事件上触发自定义绑定?

我正在尝试使用 customBindings,但我不知道如何实现这一点。我听到人们说不应该在 ViewModel 中混合 DOM 操作,所以这就是我尝试创建 CustomBindings 的原因。

这是 Jsfiddle http://jsfiddle.net/Y3M6n/2/

这是我的 HTML

这是我的js代码。

我的意图是第一个 div 显示输入,并且在用户单击按钮后它应该显示确认 div(第二个 div,它将被隐藏和显示)。如果它通过验证,那么只需在输入 (div1) 顶部确认 div (div2),以便用户可以立即输入新信息。保持流畅是业务需求。

0 投票
1 回答
442 浏览

javascript - 自定义绑定包装值但无法更新

我正在使用 Knockout.js 连接动态表单显示。因此,我需要在数组中显示和连接任意数量的“字段”,而不是可爱的命名属性。我想我已经接近了,但未能对我的自定义绑定进行最后的润色。

数据

我正在使用 ko.mapping 将此数组映射到可观察的可观察数组。所以不仅整个数组是可观察的,“名称”和“值”等每个字段也是可观察的。这个数组应该能够有任意数量的元素,并以“名称”为键。

我的自定义绑定
我需要自定义绑定(我认为)的原因是,当我的视图发生变化时,我可以连接数组的哪个成员发生了变化。再次,它以名称为键,因此我进行了快速查找。核实:

我的模板
(简单地遍历我的数组的每个元素)

但是,当我这样做时,没有任何更新。我深入研究了 Knockout 代码,发现 上_ko_property_writers不存在一个名为的属性allBindingsObject,但就目前对 Knockout 的理解而言,我不属于我的联盟。

0 投票
1 回答
934 浏览

knockout.js - 为什么这个事件在淘汰赛中被处理了两次?

出于某种原因,下面的代码使链接的点击事件触发两次。我对淘汰赛比较陌生,我想我可能做错了我的自定义绑定。谁能告诉我我做错了什么?(顺便说一句,我没有发布小提琴的原因是我不能在 jsfiddle 上包含来自 github 的映射插件。)

JS:

html:

0 投票
1 回答
412 浏览

javascript - ko.bindingHandlers.if.update 函数在 KnockoutJS 3.1 中被删除了吗?

我写了一个custom binding将像第一个那样执行if binding,并且像visible binding在下一个那样工作。

我曾经将两者都包裹起来,if.init并且if.update它在 上运行良好KO 3.0,我只是注意到它在 上被删除了KO 3.1

可以将if.update函数包装在KO 3.1? 还是您有其他建议可以帮助实现这一目标?

非常感谢,谢谢。

0 投票
2 回答
233 浏览

knockout.js - 您可以在自定义绑定中设置现有的 Knockout 绑定吗?

我目前的所有标签看起来像这样:

我想创建一个自定义绑定来提取标签中的重复项,而无需重新实现 CSS 绑定。

我可以在自定义绑定中使用 CSS 绑定吗?

如果没有,那么我将重新发明轮子,以消除一些重复,如下所示:

0 投票
1 回答
536 浏览

knockout.js - 将数组作为选项传递给 Knockout 自定义绑定

所以我确信我不是第一个尝试这样做的人,但我找不到任何与我正在尝试做的事情相匹配的例子,所以我在这里。

我有一个这样定义的 Knockout 自定义绑定。

目标是最大限度地减少想要创建表的用户必须了解的有关 javascript 的信息。我希望他们提供的 HTML 类似于:

我希望能够以类似数组的格式指定列(再次尝试不使用任何 JS)。我知道我可以做一些愚蠢的事情,比如 col1: 'id', col2: 'first name' 但我宁愿有一个对象/数组,我可以很容易地做一个 .length() 来做我的桌子。

我确实有一个使用 Jquery 处理数据的变通方法,但如果可以的话,我宁愿做这样的事情。

最后但不是租约,我假设我将通过 allBindings 访问器访问该对象,如果我弄错了,请告诉我。先感谢您。

0 投票
1 回答
9531 浏览

javascript - 淘汰赛自定义绑定更新未触发

使用以下代码,我希望每次更新 viewModel.item 可观察对象时都会执行我的更新函数。我可以看到我的 init 和 update 函数按预期在页面加载时触发,但在单击我的按钮时不会触发,这会更新 observable 的值。

标记:

脚本:

我浏览了一些类似的问题,但没有找到可比较的例子。我在这里创建了一个 JSFiddle 。

0 投票
3 回答
240 浏览

jquery - 无法设置动态添加元素的 minDate

我有一个网页,它有一个重复的部分视图,它被绑定到一个 Knockout 模板。在该视图中,我有一个日期选择器。该视图可以在单击按钮时添加任意次数。在第 1 节中选择日期,在第 2 节中设置日期选择器的 minDate,依此类推。每个部分都有自己的 Knockout 视图模型,它有一个 minDate 可观察的。附加到这个 observable,我有一个带有更新处理程序的自定义绑定 - 当添加或更新部分时,我使用它来更新元素的 minDate。

我的代码工作到可以更新任何部分中日期选择器的值的程度,并且下一部分将正确更新其 minDate。这是我的自定义绑定的代码:

我的问题是,如果我有选择日期的现有部分,然后单击添加新部分,我可以看到我新添加的视图模型的 minDate 设置正确,但是我新添加的 datepicker 上没有设置 minDate元素。

如果我单步执行我的脚本代码,我能看到的唯一区别是,即使在我中断执行的那一刻,我的部分视图已经被渲染,并且我的 $(element) 确实是一个对象,但它没有 ID 属性。这是我可以看到的工作代码和非工作代码之间的唯一区别。

任何人都可以将此视为我在动态添加的元素上设置 minDate 问题的可能原因吗?