问题标签 [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.
javascript - 淘汰赛:observableArray 的自定义绑定,仅在完成时呈现
好吧,标题可能有点混乱,所以我会解释......
我正在编写一个自定义绑定,我将向其传递一个 observableArray。这个 observableArray 是异步填充的,元素被一个一个推入。
update
问题是每次 observableArray 发生突变时都会调用我的自定义绑定(方法)。这是有道理的,但在这种情况下没有帮助,因为这意味着第一个元素被渲染n次,其中n是 observableArray 的长度,第二个元素被渲染n-1次,只有第n 个元素被渲染渲染一次。
任何人都可以解释一种让自定义绑定只做某事的简洁方法
- observableArray 已完全填充,或
- 当添加了自定义绑定尚未呈现的元素时?
我可以想出几种方法来解决这个问题,在父视图模型上使用一个额外的属性/可观察作为一个标志,上面写着“完全填充,你可以现在渲染项目”或者每个元素上的一个属性,上面写着“你'已经渲染了我'。然而,这些都很尴尬,特别是 observableArray 中的对象也有 observableArray 属性。
对于这个问题,没有更好的 Knockout/MVVM 解决方案吗?
更新: 为了清楚起见,我正在构建的东西是这样的
在哪里
并且其中包含的元素TypeGroups
是具有可观察属性的另一个视图模型的所有实例。
每次我调用TypeGroups.push(obj)
自定义绑定时都会再次调用一次。
knockout.js - Knockoutjs 自定义绑定可以检测元素中 css 类的变化吗?
我在输入元素上有 KO 自定义绑定,需要它来检测该元素的 css 类是否发生了更改(或添加)。这是我使用自定义绑定检测到的东西吗?
javascript - 如何在 knockoutjs 上的单击事件上触发自定义绑定?
我正在尝试使用 customBindings,但我不知道如何实现这一点。我听到人们说不应该在 ViewModel 中混合 DOM 操作,所以这就是我尝试创建 CustomBindings 的原因。
这是 Jsfiddle http://jsfiddle.net/Y3M6n/2/
这是我的 HTML
这是我的js代码。
我的意图是第一个 div 显示输入,并且在用户单击按钮后它应该显示确认 div(第二个 div,它将被隐藏和显示)。如果它通过验证,那么只需在输入 (div1) 顶部确认 div (div2),以便用户可以立即输入新信息。保持流畅是业务需求。
javascript - 自定义绑定包装值但无法更新
我正在使用 Knockout.js 连接动态表单显示。因此,我需要在数组中显示和连接任意数量的“字段”,而不是可爱的命名属性。我想我已经接近了,但未能对我的自定义绑定进行最后的润色。
数据
我正在使用 ko.mapping 将此数组映射到可观察的可观察数组。所以不仅整个数组是可观察的,“名称”和“值”等每个字段也是可观察的。这个数组应该能够有任意数量的元素,并以“名称”为键。
我的自定义绑定
我需要自定义绑定(我认为)的原因是,当我的视图发生变化时,我可以连接数组的哪个成员发生了变化。再次,它以名称为键,因此我进行了快速查找。核实:
我的模板
(简单地遍历我的数组的每个元素)
但是,当我这样做时,没有任何更新。我深入研究了 Knockout 代码,发现 上_ko_property_writers
不存在一个名为的属性allBindingsObject
,但就目前对 Knockout 的理解而言,我不属于我的联盟。
knockout.js - 为什么这个事件在淘汰赛中被处理了两次?
出于某种原因,下面的代码使链接的点击事件触发两次。我对淘汰赛比较陌生,我想我可能做错了我的自定义绑定。谁能告诉我我做错了什么?(顺便说一句,我没有发布小提琴的原因是我不能在 jsfiddle 上包含来自 github 的映射插件。)
JS:
html:
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
? 还是您有其他建议可以帮助实现这一目标?
非常感谢,谢谢。
knockout.js - 您可以在自定义绑定中设置现有的 Knockout 绑定吗?
我目前的所有标签看起来像这样:
我想创建一个自定义绑定来提取标签中的重复项,而无需重新实现 CSS 绑定。
我可以在自定义绑定中使用 CSS 绑定吗?
如果没有,那么我将重新发明轮子,以消除一些重复,如下所示:
knockout.js - 将数组作为选项传递给 Knockout 自定义绑定
所以我确信我不是第一个尝试这样做的人,但我找不到任何与我正在尝试做的事情相匹配的例子,所以我在这里。
我有一个这样定义的 Knockout 自定义绑定。
目标是最大限度地减少想要创建表的用户必须了解的有关 javascript 的信息。我希望他们提供的 HTML 类似于:
我希望能够以类似数组的格式指定列(再次尝试不使用任何 JS)。我知道我可以做一些愚蠢的事情,比如 col1: 'id', col2: 'first name' 但我宁愿有一个对象/数组,我可以很容易地做一个 .length() 来做我的桌子。
我确实有一个使用 Jquery 处理数据的变通方法,但如果可以的话,我宁愿做这样的事情。
最后但不是租约,我假设我将通过 allBindings 访问器访问该对象,如果我弄错了,请告诉我。先感谢您。
javascript - 淘汰赛自定义绑定更新未触发
使用以下代码,我希望每次更新 viewModel.item 可观察对象时都会执行我的更新函数。我可以看到我的 init 和 update 函数按预期在页面加载时触发,但在单击我的按钮时不会触发,这会更新 observable 的值。
标记:
脚本:
我浏览了一些类似的问题,但没有找到可比较的例子。我在这里创建了一个 JSFiddle 。
jquery - 无法设置动态添加元素的 minDate
我有一个网页,它有一个重复的部分视图,它被绑定到一个 Knockout 模板。在该视图中,我有一个日期选择器。该视图可以在单击按钮时添加任意次数。在第 1 节中选择日期,在第 2 节中设置日期选择器的 minDate,依此类推。每个部分都有自己的 Knockout 视图模型,它有一个 minDate 可观察的。附加到这个 observable,我有一个带有更新处理程序的自定义绑定 - 当添加或更新部分时,我使用它来更新元素的 minDate。
我的代码工作到可以更新任何部分中日期选择器的值的程度,并且下一部分将正确更新其 minDate。这是我的自定义绑定的代码:
我的问题是,如果我有选择日期的现有部分,然后单击添加新部分,我可以看到我新添加的视图模型的 minDate 设置正确,但是我新添加的 datepicker 上没有设置 minDate元素。
如果我单步执行我的脚本代码,我能看到的唯一区别是,即使在我中断执行的那一刻,我的部分视图已经被渲染,并且我的 $(element) 确实是一个对象,但它没有 ID 属性。这是我可以看到的工作代码和非工作代码之间的唯一区别。
任何人都可以将此视为我在动态添加的元素上设置 minDate 问题的可能原因吗?