问题标签 [ko.observablearray]

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

validation - 可观察数组上的多个淘汰验证器

我试图在可观察数组下定义多个自定义验证规则,我指的是https://github.com/ericmbarnard/Knockout-Validation/wiki/Custom-Validation-Rules

以下是我的带有验证调用的 observablearray:

当我这样做时,只会触发第一条规则。我调试了,它甚至没有击中第二个。任何想法?

提前感谢您的帮助。

0 投票
1 回答
4997 浏览

javascript - 访问可观察对象数组中的对象字段。淘汰赛JS

我有一个表,它通过数据绑定填充来自可观察对象(人)数组的数据。当我单击表格的某个单元格时,行的索引和单元格的索引被写入变量“self.currentLine”和“self.currentCell”,而输入出现在上面,宽度为 100%,高度为 100%,覆盖了数据与自身。是否有可能仅使用字段索引而不是使用字段名称来访问可观察数组中某些对象的某些字段?(例如,不是 self.persons[0]'name',而是 self.persons[0][0])

这是一个代码(JS):

我使用的 HTML 代码:

在 html 中,我根据在表格中单击的单元格设置输入可见。所以现在我需要将一个单元格的值传递给输入,所以我可以编辑这些数据。

更新:像往常一样,我忘记在输入中的 value: name() 后面加上圆括号 '()'。但是第二个问题来了。据我所知,当输入失去焦点时,必须自动更改值。但是我的没变...

0 投票
2 回答
4494 浏览

knockout.js - 将淘汰赛 observable 推入淘汰赛 observable 数组

如果该元素本身是可观察的,那么淘汰的可观察数组只会在更改数组中的元素时更新,因此我试图将一个元素“推入”可观察数组但使其可观察。我尝试了以下语句,但都导致在我的可观察数组中有一个未定义的值:

正确的方法是什么?

0 投票
1 回答
1268 浏览

knockout.js - Knockout.JS 映射到 observable 与 observableArray

当我带回一个数组(使用'foreach'绑定)时,我无法弄清楚为什么我的 ko.mapping 工作正常,但是当它是一个对象时(使用'with'绑定)它不起作用一点也不。我没有得到任何错误,但我也没有得到任何结果:

我可以将 getSingleEvent() 的结果推入一个数组并再次使用“foreach”,如下所示:

并使 singleEvent 成为 observableArray,这确实有效,但对我来说似乎是个骗子。

getEvents() 中的 JSON 如下所示:

来自 getSingleEvent() 的 JSON 如下所示:

0 投票
1 回答
848 浏览

knockout.js - 绑定的可观察数组更改后表不刷新

我被困住了,希望能得到一些帮助!

我的 ViewModel 上有一个 create 方法,它调用了一个轻而易举的 CreateEntity 方法来将新项目添加到 Office 类型的可观察数组中。这一切都很好,可观察数组的长度也相应增加 - 但是!

出于某种奇怪的原因,表格行没有相应地刷新-我做错了什么???

这是表格标记:


这是我的视图模型代码

最后,我的 Breeze Data Service 公开了这个在 VM 中使用的函数,用于将新办公室推送到 observable 数组中:

0 投票
3 回答
35108 浏览

javascript - 使用敲除将对象添加到可观察数组

出于某种原因,我无法将对象传递给可观察数组。

我的观点:

警报显示数组始终为空,请解释我做错了什么谢谢。

0 投票
1 回答
1559 浏览

knockout.js - 在 Knockout.js 中订阅 observableArray 中的 observable 属性

我的视图模型中有一个 observableArray 对象,在其中,我在一个键上有一个 observable 属性:

我需要订阅 READ 键上的更改,以便我可以禁用视图中的表单控件。在定期观察中,我会:

关于如何抄写数组中的键的任何想法?谢谢...

0 投票
1 回答
328 浏览

javascript - KnockoutJS 检查绑定问题

我对 knockoutjs 比较陌生,但我似乎遇到了一个 observableArray 复选框的问题,这些复选框有一些可观察的属性,用于检查和禁用。

使用敲除我可以选中和取消选中该框,但似乎一旦我手动与复选框交互(即通过鼠标单击它),基础数据似乎正在发生变化,但我不能使用敲除来选中或取消选中该框了。

HTML

Javascript

http://jsfiddle.net/paulwilliams0/EYEz2/

我在做什么是错的吗?我不仅是淘汰赛的新手,而且我对 MVVM 也很陌生。非常感谢

0 投票
1 回答
377 浏览

knockout.js - Knockoutjs - 添加到嵌套集合而不更新 UI

我有一个视图模型,它有几层嵌套的 observableArrays。

我现在希望将 vmTerm 的实例(Term 对象的视图模型)添加到 vmTermGroup 的特定实例,并自动更新 UI。

为了实现这一点,我构建了一个返回特定 vmDictionary 对象的函数:

一旦我有了特定的 vmDictionary 对象,我需要获取特定的 vmConcept 对象,它是我要添加到的 vmTermGroup 的父对象。我有这个 vmConcept 的 ID,我可以用它来检索它:

在 vmConcept 视图模型中,我有一个函数,AddTerm. 此函数通过检查每个 vmTermGroup 的 Language.ID 属性来确定需要哪个 vmTermGroup。

当获得匹配的 vmTermGroup 时,该函数push将新的 vmTerm 转换为该 vmTermGroup 的术语 observableArray。

但是,当我将 vmTerm 的新实例添加到 vmConcept 实例时,UI 不会更新以显示它。我可以在调用之前和之后 console.log 记录 vmTermGroup 中的 vmTerms 数量,AddTerm它显示例如 2 和 3,但视图永远不会更新。

我也试过包括一个电话,self.TermGroups()[i].Terms.valueHasMutated()但这没有什么区别。

我的怀疑是,在一个或多个级别上,我绕过了 Knockout 的可观察数组并直接潜入内部(本机)数组,这将阻止 Knockout 跟踪更改,但我看不出我还能如何实现我的目标想在这里做。

我很欣赏这是一个相当复杂的示例/问题,但是有谁知道我如何将新的 vmTerm 添加到这个内部集合中?

编辑:这是正在使用的视图模板。

foreach: Terms是我要添加的最里面的内容,并且没有更新。

至于 JsFiddle,我担心有人会要求这个。如果上面的编辑仍然没有帮助,那么我会尝试将一个放在一起,但它会与我实际正在进行的工作完全不同,因此可能不是真正的相似之处。

0 投票
1 回答
698 浏览

knockout.js - 热毛巾 - 淘汰赛绑定不更新 observablearray

我正在使用热毛巾模板创建一个 SPA 项目。我有显示项目列表的列表视图,当单击项目时,它将转到详细视图。

详细屏幕的 URL 变为:

我的详细信息屏幕包含一个可观察数组,该数组在 details.js 激活方法上使用 AJAX 填充。

FieldLable 和 FieldValue 显示没有问题,假设这意味着数据绑定确实正确。

我更改了 FieldValue,当我单击 Save 按钮时:

我的问题是 FieldValue 仍然包含原始值(未更新)。

现在我点击浏览器刷新按钮。

我更改值并单击保存。

现在保存功能会提醒正确的更改值。

我会假设代码链完全相同,但我不明白为什么从列表视图重定向时它不起作用,但刷新会突然起作用。

提前感谢您的帮助。