问题标签 [ko-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 投票
1 回答
146 浏览

javascript - 与 metro.js datepicker 的淘汰赛 mvvm 绑定

我试图用 metro.js 日期选择器和淘汰赛来破解我的方式。到目前为止,我的 datepicker 绑定代码如下所示:

问题是当我在date属性上发布模型更新时,它绑定到日期选择器不会更新。我的意思是,它是第一次这样做,但发布后,它无法更新文本框;日历显示还可以。最终我需要改变applyDate函数中的逻辑......

JSBin: http: //jsbin.com/rupaqolexa/1/edit ?html,js,output

更新:刚刚出现了另一个问题......它在 IE 10+ 中不起作用。日期显示NaN在 UI 中...

更新:复制步骤

  1. 输入日期第二个文本框:2013/05/13 并单击更改按钮。观察日期在日期选择器文本框中更新。这按预期工作。(在 IE 中除外)。
  2. 在文本框中输入另一个日期并单击更改按钮。观察日期选择器文本框中的日期未更新。这里预计日期选择器文本框会更新为最新值。
0 投票
2 回答
296 浏览

javascript - 在焦点敲除自定义绑定上显示输入的潜在价值

我已经创建了(请原谅混乱 - 目前只是将它一起破解!)淘汰赛中的以下绑定处理程序

所需的功能是,如果字段是数字,那么在显示时它将被格式化为“X”小数位(默认为 2),但基础值是输入的任何内容。

一切正常,但我想添加一个功能,当输入聚焦时,它会显示实际值,我只是不知道如何做到这一点。

IE

  1. 用户在输入中输入 1.1121
  2. 当他们离开输入时,它的格式为 1.11
  3. 如果他们回到输入(焦点)然后它显示 1.1121 进行编辑

这是第 3 点,我不知道如何实现,因为目前它显示 1.11,然后覆盖模糊?

谁能指出我正确的方向 - 基本上我在哪里可以访问焦点上的基础值并将显示的文本替换为基础值?

为简洁起见,我删除了一些其他包装输入的“装饰”代码,因为它们不相关。

提前致谢。

0 投票
0 回答
41 浏览

javascript - 在knockoutjs中应用所有自定义绑定时如何调用方法?

我正在使用 jQuery 开发 KnockoutJS。我需要myBinding在多个视图上应用自定义绑定。

我有多个视图绑定的情况,myBinding需要调用一个 JS 方法,该方法将从这些视图中传递一些视图模型数据。

我无法控制页面上有多少模板。所以我正在寻找一些句柄来跟踪页面上使用myBinding. 加载页面上的所有视图后,将随同传递的 jsonmyBinding将在 AJAX 请求中发送。

HTML 模板:

JS代码:

一旦调用了所有这些绑定,我想调用以下更新函数:

有没有办法实现同样的目标?

谢谢。

0 投票
1 回答
1223 浏览

twitter-bootstrap - 淘汰赛 3.4 选择引导选择选择器

为什么初始值 selectPicker 不适用于 Knockout 3.4 版?与淘汰赛 3.0 作品。

问题在于 this.teamID = ko.observable(3);

所选值始终等于数组中的第一个元素。

0 投票
1 回答
199 浏览

javascript - Knockoutjs单选按钮组自定义绑定不更新选择

我正在尝试在敲除中创建一个自定义绑定,其功能类似于options默认绑定处理程序,但使用单选按钮而不是下拉菜单。

将项目添加到数组将通知,update但选择不同的单选按钮不会。

注意:我将自定义绑定处理程序剥离到最低限度。

绑定处理程序

如何使用它...

因此,添加一个新项目vm.letters({ text: "C", value: 2 })将通知update. 但是,单击不同的单选按钮不会通知update.

我需要做什么才能单击单选按钮通知update

在这里演示

0 投票
1 回答
664 浏览

knockout.js - 什么是 Knockout 自定义绑定“之后”变量?

我在某些项目中使用带有ASP.NET MVC的淘汰赛。 我正在使用以下淘汰赛
bindingHandler

我从这个问题中得到了这段代码,我对其进行了少许修改。
它基本上是一个custom binding handler用于Select2 的插件

问题
我只想知道after: ["options", "value", "selectedOptions"],这里的意思。在initorupdate函数中的任何地方都没有对这个变量的引用。
这个变量在这种情况下有什么意义吗?或者这是一个淘汰指令,使其在完成执行 [ options, value, selectedOptions] 绑定后执行此自定义绑定?

请注意,自定义绑定 的文档没有提及此变量。

0 投票
3 回答
79 浏览

javascript - 自定义选择列表文本绑定不适用于 Knockoutjs 中第一个数组项的编辑器

我有一张只读电话号码表。电话号码有一个号码和一个类型(例如移动电话或家庭电话)。每个电话号码都有一个“编辑”按钮,单击该按钮后,您可以编辑电话号码并在模式对话框中键入。我将 Knockoutjs 用于只读表和编辑器。该表绑定到一个 observableArrayPhoneVMs并且编辑器在单个PhoneVM. 因为我希望用户在应用任何更改之前必须在模态上单击“确定”,所以模态在所选副本上工作PhoneVM,当他们单击“确定”时,它会替换PhoneVM表绑定到的 observableArray 中最初单击的. 这一切都很好。

现在我需要允许在与只读表相同的页面上编辑列表中的第一个电话(没有模式)。这个想法是为了在工作流程的早期更容易输入第一部电话。因此,您将在页面上输入您的手机,它会自动出现在下面的只读列表中,您也可以在模态中正常编辑它。我以为 Knockout 会让这件事变得简单,但我遇到了障碍。从这一点来看,只显示一个错误的例子会更容易。在这个小提琴中执行以下操作:https ://jsfiddle.net/ph4mhsof/

  1. 从文本框中编辑电话号码和标签。请注意所有电话列表中的第一部电话也会更新。
  2. 在下拉列表中更改电话类型。请注意,所有电话表中的类型 ID 和类型名称都发生了相应的变化。
  3. 单击删除第一部电话。第二部手机成为新的第一部手机。
  4. 从文本框中编辑电话号码和标签。请注意所有电话列表中的第一部电话按预期更新。
  5. 在下拉列表中更改电话类型。请注意所有电话列表中的类型 ID 更新。类型名称不会更新。

我正在使用自定义绑定将类型名称绑定到选择的文本。似乎该绑定的 init 函数中的 valueAccessor 必须专门指向原始的第一个 PhoneVM 的PhoneTypeName属性,但我需要它做的是指向firstPhone计算属性的PhoneTypeName. 有没有什么办法解决这一问题?

原始jsfiddle的副本:

0 投票
1 回答
195 浏览

javascript - 在自定义绑定中扩展可观察对象

我有一个自定义绑定处理程序,我将其绑定到我的视图模型中的一个复杂对象。

绑定处理程序正常工作,并且update当任何可观察的属性更新时调用该函数。但是,每个update更新的属性都会调用该函数,这会导致奇怪的行为,因为我依赖于整个对象可用且是最新的。

我理解为什么会发生这种情况,因为每个属性都会导致调用更新,并且我想我知道如何防止这种情况发生——通过使用 Knockout 的延迟更新功能。

但是,我无法找到如何仅为自定义绑定中的 observable 启用延迟更新。我不想在应用程序范围内启用它,因为我正在将绑定编写为库函数。

我尝试了许多不同的方法,包括:

所有这些都没有奏效。

我还没有找到任何其他自定义绑定处理程序可以远程接近这种函数,并且一直在尝试将它与其他函数拼凑在一起。

我的绑定代码本身相对简单,我将绑定对象简单地拆分出参数并将它们传递给代码镜像实例。

我的 HTML 代码是:

我将Dotnetify用于 ViewModel,因此它是一个合理的复杂 C# 类,但只要说绑定正在工作和更新就足够了,但我需要它只在所有属性都更新后才调用“更新”。

0 投票
1 回答
67 浏览

javascript - 淘汰赛全局自定义绑定

要求是格式化所有页面上显示的金额。这是我的自定义绑定代码。

这是格式化金额的方法(不太相关但仍在发布)

}

这是来自 cshtml 以显示我如何绑定它

getCultureSpecificAmount方法是用普通的js写的目前我正在为每个 js 编写自定义绑定的代码。如果我将此代码移至 common.js,则它将停止工作。在每一页上写这段代码会使代码看起来非常难看。有没有办法全局定义自定义绑定并在所有页面中使用它。这是我的淘汰赛项目,所以我完全一无所知。