问题标签 [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.
knockout.js - 淘汰订阅正在意外评估
我需要一个时间戳来更新值。由于我不会在这里讨论的原因,它value
是一个可写的计算,它指向一个valueInstance
可观察的,所以它们基本上显示相同的数据。
如果我订阅了 observable,它会按预期工作,只有在 observable 发生变化时才会触发。如果我订阅了计算,它会立即触发,导致错误的时间戳,即使 observable 仍然未定义。这是怎么回事?
更新:看起来这只发生在计算有deferEvaluation: true
knockout.js - 在淘汰订阅功能中识别此关键字的目标
我刚刚第一次阅读了敲除库网站的入门文档,并且有一个关于如何在发送到敲除订阅函数的回调函数中指定this关键字的目标的问题,在跟踪更改的上下文中正在观察其属性的一组对象。
我需要跟踪 100 个属性最初为空的对象。这 100 个对象中的每一个都可以用同一个视图模型来描述:
subscribe() 函数的第二个参数“定义了回调函数中this的值”。http://knockoutjs.com/documentation/observables.html
当我需要知道这 100 个对象中的哪一个发生了变化时,我不确定第二个参数是什么。当视图模型中的任何属性从 null 更改为一个值,或从一个值更改为另一个值时,我想知道更改发生在哪个对象中,例如a88。
知道哪个属性发生了更改也很好,但更重要的是我知道其属性已更改的对象。
knockout.js - 强制淘汰计算 observableArray 的长度为 1(一)
我有一个computed
observableArray
被调用者,它从另一个被调用者selectedToppings
返回过滤后的数据。 应该返回所有属性设置为的浇头。在某些情况下,只能选择一种浇头,例如客户订购儿童大小的冰淇淋时。这是我的代码。observableArray
toppings
selectedToppings
observable
selected
true
也在jsfiddle上。
availableToppings
如果应该遵循它,我正在使用订阅来强制执行单顶规则。此实现不起作用,我不知道如何修复它。
什么不起作用:
- 确保未选中多选。
- 单击可用洒水。
- 单击可用的棉花糖。
- 单击可用的坚果。
- 单击可用洒水。
- 注意选择是如何没有改变的。
javascript - 订阅前未触发 registerEventHandler
在我的代码中,我首先使用 registerEventHandler 来使用 jquery 货币插件,因此它将“€ 123,00”映射到 123,00。
现在,当我在其他地方订阅更改事件时,我仍然收到字符串而不是数字:
在 registerEventHandler 为“更改”设置断点时,我注意到它在我的订阅后被击中。
我错过了什么?
jquery - Knockout 订阅以在 dom 更新后触发
如何处理dom 更新后触发的订阅?我正在尝试运行一些jQuery,通过给它们一个“偶数”的css类来更新表上的偶数可见行。subscribe 函数正在监听一个属性的变化carsOnly
,它会切换是否只显示汽车项目,或者是否应该显示所有项目。
问题:在我的订阅中,设置偶数行的 CSS 的 jQuery在 dom 更新之前运行,因此它向行添加“偶数”类,然后当 dom 最终更新时,这些行会在一瞬间隐藏。
html:
JS:
CSS:
knockout.js - 使用 Knockout 订阅的循环依赖
在我使用 Knockout.js 订阅面临循环依赖的情况下,以下代码是否有任何可能的修复方法。
其中“self”是“this”的别名,observable1 链接到组合框,observable2 链接到日期选择器。
请建议
knockout.js - 当值不变时,如何强制 Knockout 订阅触发?
我有一组用于选择住宅地址的级联下拉列表。我们按以下顺序拆分地址:
- 街道名称(例如 10th、11th、Main)
- 街道后缀(例如 St、Ave)
- 街道方向
- 街道号码(门牌号)
我正在使用敲除来生成下拉列表中的值,这些值是通过 REST 查询从数据库中提取的。除了单个边缘情况外,我的工作效果很好。
首先让我告诉你一些关于地址的信息(当它们像这样分开时)。总有街道名称,总有街道号码。后缀和方向并不总是使用。所以我可能有一个 100 Savanna South(Savanna South 是街道名称)或 101 Main St。假设后缀和方向发生变化,我有这些场景工作。
问题是,当我从 10 号切换到 11 号时。它们都只有“Street”后缀,并且都只有一个“West”方向。当我进行更改时,后缀和方向不会更改,这不会触发适当的订阅以提取下一组数据。因此,如果我从 10 日更改为 11 日,门牌号码不会更新。
我一直在尝试几件事,从$.trigger('change')
在现场做一个 jQuery 到你在上面看到的添加.valueHasMutated()
. 我可以编写详细的代码来检查街道名称是否已更改,但后缀和方向没有更改,然后重新加载街道编号,但我会尽可能保持在订阅框架内。
谁能指出我正确的方向来触发该.subscribe()
功能或如何采取另一种方法?
注意:鉴于 REST 端点位于专用网络中并且不公开可用,我真的不能做 JSFiddle。否则我会提供一个。
javascript - 如何确定与 Knockout 可观察数组元素对应的 DOM 元素?
在我的模型中,我有一个带有可观察元素的对象数组。我订阅了这些元素之一(下拉列表),以便填写下一个下拉列表(级联下拉列表)。我现在需要在这些下拉列表中获取所选值的描述。我将如何从下拉列表中提取该值?如果可能,我试图避免对服务器运行查询。
过去我做过self.deptName($('#AssignedDepartment option:selected').text());
,但现在这个下拉列表并不是唯一的。我可以有很多选择。我uniqueName: true
在每个领域都使用。在订阅中,我如何确定更改了哪个下拉菜单?
这是我的订阅的样子:
这是下拉列表的 HTML:
这是绑定处理程序:
更新1:由于存在混乱。如果我在下拉列表中选择带有“假期”文本的值“VAC”。如何将文本“假期”放入我的模型中?
更新 2:这是一个 jsFiddle,上面列出了我的(大部分)工作代码。http://jsfiddle.net/MikeWills/cykuqxto/6/出于某种原因,加载时我的下拉菜单不起作用,但再添加一天,您会看到我的下拉菜单。
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 之后已经有了订阅者的一些属性而没有它?或者这可能是剑道窗口的问题
knockout.js - 什么是原型和订阅淘汰赛?
我正在查看其他人的代码并试图了解他们做了什么。那里有一些我不知道它们是什么的术语。原型,订阅?有人可以帮我理解这个功能在做什么吗?
谢谢