问题标签 [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 回答
264 浏览

javascript - 自定义绑定中的条件更新

我有一个自定义绑定,用于在视图模型上更改字段(“类型”)时重新初始化 dom 元素。这是在更新回调中定义的。

请参阅此jsFiddle以获取精简演示。

据我了解,调用更新的条件之一如下:

自定义绑定的机制

任何时候触发同一数据绑定属性中的另一个绑定。这有助于确保在更改选项时,值之类的东西是合适的。

我遇到的问题是,只要 viewmodel 上的值发生更改,也会调用此更新回调。

那么......是否有可能:

  1. 禁止绑定之一调用自定义绑定。
  2. 检测自定义绑定中的调用源。
0 投票
1 回答
888 浏览

asp.net-mvc - 淘汰js引导组合框自定义绑定

我有一个关于将引导组合框插件与淘汰赛(和 mvc)结合使用的问题。

我有一种情况,我在模板中使用了开箱即用的 MVC html 帮助程序,例如 Dropdownlisfor、textboxfor 等。我正在使用 Knockout 将数据集合绑定到模板。mvc html 助手为 DropDownlistfor 助手创建一个“选择”控件。在我想在控件上调用我的引导插件之前,我需要渲染它,以便设置所有必要的验证属性等。我最初使用 afterrender 并在该方法中,我找到了“选择”控件并在其上调用插件。

我们的问题是,我们不想每次在其他地方以类似的方式使用引导组合框控件时都这样做。所以,我一直在研究自定义绑定(我应该首先完成)并且有一个关于如何在我的状态中使用自定义绑定的问题。

我找到了这篇文章,他在其中为引导预输入控件创建了一个自定义绑定。我可以为组合框制作一个类似的。但我只能在控件呈现后调用它。那么,有没有办法让我们指定 KO 只执行自定义绑定“afterrender”而不是立即执行。这样,选择控件被呈现,然后我可以在选择控件上调用自定义绑定中的插件。

这是更多信息。

我有一个使用模板的表

我有与此类似的模板

我有自己的 html 助手(KnockoutDropDownListFor 等),它们生成一个带有指定 KO 绑定的选择控件。

请建议什么是解决它的好方法。如果您需要更多信息,请告诉我。

0 投票
1 回答
4339 浏览

twitter-bootstrap - knockout.js 和引导模式对话框

我正在使用我在 SO 上找到的一些代码(这里的第二个答案:knockout.js - deferred databinding for modal?)。

但是,详细信息并未显示在表单中。

这是查看代码:

将数据分配给 editTransaction 时显示对话框 - pre ko.toJSON 调试 HTML 显示以下内容:

我已经搜索并看到了有关初始化模式时(加载页面时)数据不可用的评论,但这对我来说没有意义(我相信点绑定是它们在数据视图时更新更改,并且调试语句也可以正常工作)。我已经尝试在绑定代码中不使用 with 并且在数据绑定文本中引用 $root 。

因此,任何为什么它不起作用的想法都会很棒。

0 投票
1 回答
274 浏览

knockout.js - KnockoutJS 自定义绑定元素没有子元素?

我正在开发一个自定义绑定,它将获取现有值并将其插入到视图模型中。但是,我遇到了一个障碍,ko.bindingHandlers 中提供的元素似乎没有任何子元素。

这是 KnockoutJS 中的工作方式还是我遗漏了什么?

这是我的 HTML 标记:

这是我的 JS 代码:

您也可以在 jsFiddle 上看到它:http: //jsfiddle.net/dzul1983/XjD3Y/1/

0 投票
1 回答
1668 浏览

knockout.js - 在 Knockout 自定义 bindinghandler 中调用 HTML 中提供的方法

我在当前项目中同时使用了 knockout.js 和hammer.js。我在hammer.js 中为'tap' 事件创建了一个自定义绑定处理程序(这也适用于其他事件,例如保持或滑动)。我的问题是,在这个绑定处理程序中,我想调用我在 HTML 的 data-bind 属性中提供的方法。根据淘汰文档,我发现我应该调用 valueAccessor(),但不幸的是,这没有任何作用。我已经创建了这个 Fiddle,它应该给你一个我的问题的清晰例子。感谢你们对我的帮助。

HTML:

JS:

0 投票
2 回答
1392 浏览

knockout.js - 使用我自己的自定义绑定包装淘汰赛“模板”绑定时出现异常

我正在尝试基于模板绑定编写自定义绑定。想法是拥有自己的视图模型类的模板,但我不想将该类的实例添加到父视图模型(至少不在代码中。在执行时添加实例对我来说是可以的)。

要了解我在这里要实现的目标是示例:我想构建高级滑块,我不希望滑块的 html 在模板中,滑块也需要它自己的类,但我不想添加滑块的视图模型实例到父视图模型。这是我的代码,它起初可以工作,并且似乎首先呈现模板,但随后抛出异常,我不明白为什么。在此处查看工作代码

html:

js:

0 投票
1 回答
543 浏览

javascript - 绑定到自定义绑定中创建的 observable

我正在尝试将可观察对象的创建封装在自定义绑定中,就像 knockoutjs-validation 的 isValid 一样,但不扩展绑定,因为将来此属性将是另一个绑定的结果,该绑定记录了一个复杂的事件序列输入,感觉除了为此使用自定义绑定之外我不应该做更多的事情。

以下代码显示了我负责创建 observable 的自定义绑定。

我遇到的问题是 observable 似乎是在执行 applyBindings 命令的一部分之后创建的,并且只有 View 上的后绑定才能看到 observable 的正确值。

我写了一个 jsfiddle 来展示这种行为。其中,IsRed是有问题的可观察对象。

http://jsfiddle.net/ricardomp/c2HnJ/15/

预期的结果将是具有红色背景的输入和具有相同值之前和之后的跨度标签。

我能做些什么来实现这个结果?结果绑定不应该依赖于任何外部可观察对象或属性,对吗?您会提出替代实施方案吗?

提前致谢。

更新:

我认为值得一提的是,myBinding 是一个封装了多个绑定的绑定。所以,像 IsRed 一样,我将有 3 或 4 个绑定分配给类似的可观察对象。

最后更新:

在 RP 的回答之后,我编写了以下代码来完成 observables 的初始化:

之后,我只需要在初始化时调用我的 observable 上的 colorStatus 即可。

就这样。

0 投票
1 回答
503 浏览

c# - 在自定义绑定上启用 HTTP 和 HTTPS

是否可以向这样的自定义绑定添加 HTTPS 和 HTTP 支持?

端点:

0 投票
1 回答
3102 浏览

knockout.js - Google Chart API 的淘汰赛自定义绑定 - 访问被拒绝

几天来,我一直在尝试如何做到这一点,并在谷歌上搜索构建的解决方案,但遗憾的是没有成功。

我正在为定制的电子商务产品构建一个管理部分。此管理区域完全构建为 SPA(单页应用程序),通过 AJAX 调用动态加载“ko”模板及其数据。

现在,手头的问题是我想在这个 ko 模板中包含图表、饼图和其他数据可视化元素(即在仪表板模板中很好地显示在图表上的汇总数据)。

为此,我正在为Google Chart API开发一个“KO 自定义绑定”,该 API正在被正确调用。

这是我到目前为止所拥有的,它创建了一个固定的图表(适用于 KO:this sample

然后,从模板中,我调用绑定,现在传递“false”,或者来自 viewModel 的任何虚拟 ko.observable。

现在,终于(对不起,花了这么长时间),我遇到的问题:

之后,google.load("visualization", "1", { packages: ["corechart"] });“元素”内容变得不可访问(无法从我的 IDE 发布捕获,因为我是声誉问题的新手),使回调失败,并且不呈现图表。在调用“google.load”之前,“元素”的内容都在那里,并且可以访问。然后Javascript runtime error: Access is denied在回调被调用时得到一个。

希望能得到一些帮助,因为我被困在这个问题上。谢谢!路易斯

0 投票
2 回答
2385 浏览

knockout.js - 淘汰自定义绑定以从其他可观察对象更新可观察对象

我有两个具有相同选项的选择输入,并且在第一个选择中更改值应该禁用第二个(包括)选择一个中的所有先前选项,并将第二个选择的值设置为第一个下一个值。我在这里设置了一个工作小提琴。

我创建了自定义绑定处理程序:

并且如果您更改第一个选择它会在第二个中禁用所有先前的选项,并将第二个的值设置为第一个下一个值,但问题是当用户想要在第二个更改值时,由于更新而无法执行from custom binding 总是根据 first 设置值。所以我的问题是如何在自定义绑定中知道如何更新值,从更改 valueAccessor() 可观察或通过更改第二个选择手动更改?