问题标签 [knockout-3.0]

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 回答
4009 浏览

knockout.js - 从淘汰赛 3.2 中的自定义组件更新 observable

我正在尝试使用淘汰赛 3.2中的自定义组件并从组件内更新 observable。这是我的自定义组件的示例:

它的模板如下所示:

问题是当我在完整的 JS fiddle 中单击 Up/Down 功能时。我明白了

未捕获的错误:除非您指定“写入”选项,否则无法将值写入 ko.computed。如果您想读取当前值,请不要传递任何参数。

当然,我可以var a = new Vm();从组件内部使用和更新它,a.yourVote(num);但这打破了组件的整体理念。

我怎样才能正确地做到这一点?

0 投票
1 回答
261 浏览

jquery - 验证在淘汰赛js中不起作用

我正在为此验证唯一参数的输入字段,我正在使用此代码。

但是当我添加重复值时,它不会向我显示任何消息。termValues 是一个可观察的数组,我像这样添加它的值。

我正在为此使用淘汰赛验证插件。

这是js小提琴链接

0 投票
1 回答
325 浏览

knockout.js - 对 observableArray 进行排序会弄乱“已检查”绑定

我有一个带有可观察的子视图模型数组的视图模型。

这些应该是用户可排序的,所以我使用的sort()方法是observableArray

每个项目都有一个type可观察的,通过绑定绑定到单选框列表checked

现象是当items数组被排序时,单选框随机丢失它们的状态,即对于它们的看似随机的子集,屏幕上看不到任何点——即使它们的仍然保留在视图模型中。

自己试试:http: //jsfiddle.net/yxg53bph/——点击“排序”几次,观察效果。

简单的问题:这里出了什么问题,我该如何解决?


排序后调用notifySubscribers()单个项目修复了显示问题。然而,这是一个黑客,而不是一个解决方案。

0 投票
1 回答
511 浏览

javascript - 淘汰绑定处理程序 - IE9 上未定义的 bindingContext.$data

我正在尝试创建一个自定义绑定处理程序,以对页面上的字段应用基于角色的访问。在自定义处理程序中,它将检查来自 viewModel 的其他可观察对象的值,并根据条件启用或禁用输入控制。

但我无法通过 bindingContext.$parent、$root、$data 或 $rawData 获取当前 ViewModel。当我在 IE 上调试时,它只显示 {...}

该问题仅出现在 IE 上,它在 google crome 上运行良好。有人可以帮助我如何通过 bindingContext 获取当前的 ViewModel。

这是小提琴

0 投票
1 回答
216 浏览

javascript - 嵌套任意 ​​Javascript 对象中的 Knockoutjs 下拉预选择工作正常 KO 2x 版本 在 KO 3x 版本中不工作

所以这是我的样本数据。它将以 json 格式构造加载表单服务器到下面的对象图中。它是一组“Choice”对象,每个对象都将具有id、name、stages 和 currentStageId属性。“ Choice”对象中的“stages”属性是一个“Stage”对象数组,它具有id、name 和 value属性。“Choice”对象将经历从“第一阶段”到“第四阶段”的阶段数所以用户可以从给定下拉列表中选择一个“阶段”并保存它。“currentStageId”是存储“id”的属性

注意:为简洁起见,每个选项可以有不同类型的阶段,尽可能简单

即对于选择 1,当前保存的阶段是 4

这是保存数据的“Choice”和“Stage”模型和用于绑定的ViewModel

这是我的看法

Knockout.js 2x 版本

  1. 已保存阶段的预选择正在工作
  2. 选择的阶段被更新为底层的 observable

这是在 js 中使用 KO 2x 的工作示例

Knockout.js 3x 版本

  1. 已保存阶段的预选择不起作用
  2. 不保留用于选择的选定阶段。更改选择时,每次更改选择时,都将 selectedStage 设置为下拉列表中的第一项。

这是KO 3x 的工作示例

最后是实际部分。问题!

  1. 为什么相同的代码在两个不同版本的 KO 中表现不同。我在 KO 中错过了什么新东西吗?还是KO中的错误?
  2. 使用最新版本的 KO 应该做哪些代码更改以产生与更高版本 KO 相同的功能?因为我的项目是用最新版本的 konckout.js 3.1.0 开发的,我不想切换回旧版本来实现这个功能。
  3. KO 版本的哪个行为是正确的,无论是 2x 还是 3x?内部发生了什么?这是导致这种行为差异的原因?

提前致谢。

0 投票
2 回答
582 浏览

javascript - knockoutjs custum 绑定预处理方法和 addBindingCallback?

从淘汰赛文档:

ko.bindingHandlers.<name>.preprocess(value, name, addBindingCallback)

参数

value : ...
name : ...
addBinding:一个回调函数,您可以选择使用它在当前元素上插入另一个绑定。这需要两个参数,名称和值。例如,在您的 preprocess 函数中,调用addBinding('visible', 'acceptsTerms()');以使 Knockout 的行为就好像该元素具有visible: acceptsTerms()绑定一样。

例如,我们可以有如下绑定:

我的问题:
是否可以将方法范围内的变量传递preporcess给新添加的绑定?

那可能吗 ?如何 ?

0 投票
1 回答
178 浏览

knockout.js - 与外部数据敲除js绑定

即使我可以在浏览器中看到,来自 eventschemas 的数据也没有绑定。这可以在我在底部提供的 $data 值中看到。请注意,这是对问题和架构的最小再现改不了。。

我的 html

我的JavaScript:

这就是我的 $data 的样子:

如您所见,即使我可以在浏览器的下拉列表框中看到值,“eventschemacondition”中的“模式”也是空的。

衷心感谢任何帮助

谢谢

0 投票
1 回答
226 浏览

javascript - Knockout.js foreach binding works, but with binding does not

Using Knockout.js 3.2.0, I've been fighting to get an observableArray successfully bound, and have narrowed it down to the with binding. Foreach has no problems, but with throws the error Uncaught ReferenceError: Unable to process binding "with: function (){return contactLists }".

Can anyone help me understand what's going on?

This works:

This doesn't:

ko.observableArray and applyBindings declarations:

Many thanks for any help!

0 投票
2 回答
1160 浏览

javascript - Knockout Components ,模板已经被注入到这个元素中,但还没有绑定

Knockoutjs Docs我不明白这句话:
模板已经注入到这个元素中,但还没有绑定。

0 投票
1 回答
1316 浏览

javascript - 如何使用 Knockout foreach 构建多列布局?

我已经包含了一个代码片段,它演示了我正在尝试解决的问题。我正在尝试根据observableArray. 我尝试过使用 Knockoutif绑定,但这在foreach. 这看起来应该很简单,但由于某种原因,我无法弄清楚如何在 Knockout 领域内完成这项工作。