问题标签 [knockout-subscribe]

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 投票
2 回答
759 浏览

knockout.js - 淘汰订阅正在意外评估

我需要一个时间戳来更新值。由于我不会在这里讨论的原因,它value是一个可写的计算,它指向一个valueInstance可观察的,所以它们基本上显示相同的数据。

如果我订阅了 observable,它会按预期工作,只有在 observable 发生变化时才会触发。如果我订阅了计算,它会立即触发,导致错误的时间戳,即使 observable 仍然未定义。这是怎么回事?

http://jsfiddle.net/bNXhm/

更新:看起来这只发生在计算有deferEvaluation: true

http://jsfiddle.net/bNXhm/1/

0 投票
1 回答
1629 浏览

knockout.js - 在淘汰订阅功能中识别此关键字的目标

我刚刚第一次阅读了敲除库网站的入门文档,并且有一个关于如何在发送到敲除订阅函数的回调函数中指定this关键字的目标的问题,在跟踪更改的上下文中正在观察其属性的一组对象。

我需要跟踪 100 个属性最初为空的对象。这 100 个对象中的每一个都可以用同一个视图模型来描述:

subscribe() 函数的第二个参数“定义了回调函数中this的值”。http://knockoutjs.com/documentation/observables.html

当我需要知道这 100 个对象中的哪一个发生了变化时,我不确定第二个参数是什么。当视图模型中的任何属性从 null 更改为一个值,或从一个值更改为另一个值时,我想知道更改发生在哪个对象中,例如a88

知道哪个属性发生了更改也很好,但更重要的是我知道其属性已更改的对象。

0 投票
1 回答
176 浏览

knockout.js - 强制淘汰计算 observableArray 的长度为 1(一)

我有一个computed observableArray被调用者,它从另一个被调用者selectedToppings返回过滤后的数据。 应该返回所有属性设置为的浇头。在某些情况下,只能选择一种浇头,例如客户订购儿童大小的冰淇淋时。这是我的代码。observableArraytoppingsselectedToppingsobservableselectedtrue

也在jsfiddle上。

availableToppings如果应该遵循它,我正在使用订阅来强制执行单顶规则。此实现不起作用,我不知道如何修复它。

什么不起作用:

  1. 确保未选中多选。
  2. 单击可用洒水。
  3. 单击可用的棉花糖。
  4. 单击可用的坚果。
  5. 单击可用洒水。
  6. 注意选择是如何没有改变的。
0 投票
1 回答
843 浏览

javascript - 订阅前未触发 registerEventHandler

在我的代码中,我首先使用 registerEventHandler 来使用 jquery 货币插件,因此它将“€ 123,00”映射到 123,00。

现在,当我在其他地方订阅更改事件时,我仍然收到字符串而不是数字:

在 registerEventHandler 为“更改”设置断点时,我注意到它在我的订阅后被击中。

我错过了什么?

0 投票
1 回答
209 浏览

jquery - Knockout 订阅以在 dom 更新后触发

如何处理dom 更新后触发的订阅?我正在尝试运行一些jQuery,通过给它们一个“偶数”的css类来更新表上的偶数可见行。subscribe 函数正在监听一个属性的变化carsOnly,它会切换是否只显示汽车项目,或者是否应该显示所有项目。

问题:在我的订阅中,设置偶数行的 CSS 的 jQuery在 dom 更新之前运行,因此它向行添加“偶数”类,然后当 dom 最终更新时,这些行会在一瞬间隐藏。

html:

JS:

CSS:

0 投票
2 回答
503 浏览

knockout.js - 使用 Knockout 订阅的循环依赖

在我使用 Knockout.js 订阅面临循环依赖的情况下,以下代码是否有任何可能的修复方法。

其中“self”是“this”的别名,observable1 链接到组合框,observable2 链接到日期选择器。

请建议

0 投票
1 回答
6004 浏览

knockout.js - 当值不变时,如何强制 Knockout 订阅触发?

我有一组用于选择住宅地址的级联下拉列表。我们按以下顺序拆分地址:

  1. 街道名称(例如 10th、11th、Main)
  2. 街道后缀(例如 St、Ave)
  3. 街道方向
  4. 街道号码(门牌号)

我正在使用敲除来生成下拉列表中的值,这些值是通过 REST 查询从数据库中提取的。除了单个边缘情况外,我的工作效果很好。

首先让我告诉你一些关于地址的信息(当它们像这样分开时)。总有街道名称,总有街道号码。后缀和方向并不总是使用。所以我可能有一个 100 Savanna South(Savanna South 是街道名称)或 101 Main St。假设后缀和方向发生变化,我有这些场景工作。

问题是,当我从 10 号切换到 11 号时。它们都只有“Street”后缀,并且都只有一个“West”方向。当我进行更改时,后缀和方向不会更改,这不会触发适当的订阅以提取下一组数据。因此,如果我从 10 日更改为 11 日,门牌号码不会更新。

我一直在尝试几件事,从$.trigger('change')在现场做一个 jQuery 到你在上面看到的添加.valueHasMutated(). 我可以编写详细的代码来检查街道名称是否已更改,但后缀和方向没有更改,然后重新加载街道编号,但我会尽可能保持在订阅框架内。

谁能指出我正确的方向来触发该.subscribe()功能或如何采取另一种方法?

注意:鉴于 REST 端点位于专用网络中并且不公开可用,我真的不能做 JSFiddle。否则我会提供一个。

0 投票
1 回答
307 浏览

javascript - 如何确定与 Knockout 可观察数组元素对应的 DOM 元素?

在我的模型中,我有一个带有可观察元素的对象数组。我订阅了这些元素之一(下拉列表),以便填写下一个下拉列表(级联下拉列表)。我现在需要在这些下拉列表中获取所选值的描述。我将如何从下拉列表中提取该值?如果可能,我试图避免对服务器运行查询。

过去我做过self.deptName($('#AssignedDepartment option:selected').text());,但现在这个下拉列表并不是唯一的。我可以有很多选择。我uniqueName: true在每个领域都使用。在订阅中,我如何确定更改了哪个下拉菜单?

这是我的订阅的样子:

这是下拉列表的 HTML:

这是绑定处理程序:

更新1:由于存在混乱。如果我在下拉列表中选择带有“假期”文本的值“VAC”。如何将文本“假期”放入我的模型中?

更新 2:这是一个 jsFiddle,上面列出了我的(大部分)工作代码。http://jsfiddle.net/MikeWills/cykuqxto/6/出于某种原因,加载时我的下拉菜单不起作用,但再添加一天,您会看到我的下拉菜单。

0 投票
0 回答
137 浏览

knockout.js - ko.mapping.fromJS 添加了额外的订阅

我正在使用 KO 在 Kendo Window 中绑定数据。这是我的 html 的样例

formId 与 viewModel 绑定。当文档准备好时,我通过 ajax 获取窗口内容(带有 viewModel 的 html 到这个窗口)。我这样做如下:

newObj - 是带有 fe 信息的 JSON 对象。按钮名称等在 newObj 中还有其他属性。我看到执行ko.mapping.fromJS一些属性后有getSubscriptionsCount()==1. 当我尝试更改这些属性时,我的窗口再次呈现。再次触发文档就绪

为什么我在 ko.mapping.fromJS 之后已经有了订阅者的一些属性而没有它?或者这可能是剑道窗口的问题

0 投票
1 回答
402 浏览

knockout.js - 什么是原型和订阅淘汰赛?

我正在查看其他人的代码并试图了解他们做了什么。那里有一些我不知道它们是什么的术语。原型,订阅?有人可以帮我理解这个功能在做什么吗?

谢谢