问题标签 [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 回答
1914 浏览

foreach - 淘汰 Javascript 使用绑定的可观察数组制作 foreach 复选框部分的任何策略

基本上我正在制作一个可重复的部分,并且我希望所有复选框的选中状态都由数组预先提供。

但显然 value="$data" 只是返回字符串 "$data"。我决定开始研究一个解决方案,在我保存和加载相关数据时,我只用 json 字符串映射数组,但这增加了复杂性,感觉就像一个 hack,所以我想知道是否有更好的方法来处理这个情况。我还希望supplierUsers 可以直接映射到viewModel,因为我将从viewModel 生成对服务器的响应,但是observableArrays 似乎不适用于该参数。

我使用淘汰赛框架只有 3 天,感谢任何帮助/建议。

0 投票
1 回答
8959 浏览

javascript - knockoutjs ObservableArrays 和排序功能:UI 未更新

在我的视图模型中,我有一个 knockoutjs ObserableArray。在我初始化 ViewModel 之后,它就成功绑定了数据。然后,我需要做的是对集合进行排序。

如您所见,我将元素的名称输出到控制台以查看排序前后的顺序。排序工作得很好。问题在于 UI 更新。不知何故,用户界面没有更新。

然后,尝试使用以下代码从数组中删除一条记录,以查看 UI 是否会响应:

UI 保持不变,没有再次更新。这里会有什么问题?

编辑:

这也是一个示例案例:http: //jsfiddle.net/tugberk/KLpwP/

这里也有同样的问题。

编辑:

我解决了这个示例中显示的问题:http: //jsfiddle.net/tugberk/KLpwP/16/但我仍然不确定为什么它像我最初尝试的那样有效。

0 投票
1 回答
471 浏览

binding - 在 Knockout foreach 中创建自定义绑定

我不明白我错在哪里。你能帮帮我吗?我创建了一个名为“bTest1”的自定义绑定,两个可观察数据(1 个数组和 1 个字符串)。将此绑定应用于字符串可以正常工作,但不能通过 ko:foreach 应用于数组

这是我的 jsfiddle 链接:这里

和我的代码

和我的 JS 代码(尽可能简单):

我感谢你帮助我。最好的问候 S。

0 投票
2 回答
3066 浏览

jquery - knockout.js:如何更新列表(调用服务器)作为用户更改的过滤器值

我有一个从服务器(AJAX + JSON)获取的项目列表,并过滤了这些项目的状态来过滤列表。我希望在更改过滤器值后立即更新列表(发布新的 Ajax 请求)。请帮忙

更新:其中一种方法是订阅 selectedStatus 模型内部的更改,如下所示:

这是最好的方法吗?

0 投票
1 回答
2367 浏览

model-view-controller - knockout.js - 从模型的子列表中添加/删除项目

我有一个 foreach 模板在页面上显示作业列表。在每项工作中,我都有一份工作说明清单。我在设置适当的 observable 以允许在视图中更新工作说明时遇到问题。

这是 jsFiddle 的链接:http: //jsfiddle.net/b3B8p/

或者,这里是它的代码。我不确定是将子列表的可观察数组放入 Job 对象本身还是放入 View ...

0 投票
2 回答
2974 浏览

knockout.js - 可观察数组的敲除映射似乎不起作用

我在我的 MVC 项目中使用淘汰赛 (KO)。我在服务器上创建了一个 MVC 模型(用于网格)并将其传递给视图。在视图上,它被序列化并转换为 KO 模型(使用 ko.mapping),该模型又用于绑定。然后在 HTML 中使用该绑定来创建网格。

这就是我的 MVC 网格模型的样子,然后通过 ko.mapping 将其转换为相应的 KO 模型:

很明显,主模型类 GridModel 由以下作为属性存在的类组成:

GridBodyModel:具有要在网格主体中呈现的行列表。

GridContext:具有总页数作为属性。它还具有其他属性,但这超出了本次讨论的范围。

GridHeaderModel:具有必须显示在网格标题中的单元格列表。

然后我有这个脚本,它将在新页面加载时执行。

Global_GridKOModel是全局 javascript 变量。 模型是来自服务器的 MVC 网格模型。

用户可以再次在页面上执行进一步的搜索。我通过 Ajax 发布新的搜索条件来处理这个问题。在这篇文章中,创建了一个新的 MVC 模型并作为 Ajax 响应发回。然后,这个新的 MVC 模型被简单地用于使用 ko.mapping 更新 Global_GridKOModel ,这反过来又刷新了之前在新页面加载时构建的网格(使用新数据)。我就是这样做的。

除以下情况外,一切正常。

发出一个没有返回结果的 Ajax 请求,即模型 GridModel 中的 GridBodyModel 和 GridHeaderModel 为空。该时间网格正确地显示没有找到任何记录。这是对的。这通过以下 HTML 绑定发生。

现在之后,如果发出另一个 Ajax 请求,但这次返回记录(我已经用 firebug 检查了响应,并确认确实返回了记录)。这次发生了网格构造,其中访问了各种可观察的数组。例如,为以下网格构造寻呼机是我编写的一段 HTML 绑定。

这次 KO 抛出以下错误,可以在 firebug 中看到。

无法解析绑定。消息:TypeError:GridHeader.Cells 不是函数;绑定值:attr:{colspan: GridHeader.Cells().length }

只要有记录被返回,它就可以正常工作,但是如上所述在没有返回记录后它会中断。请注意,当没有返回记录时,GridHeader 在早期响应中为空。我在 ko.mapping 中闻到了一些腥味。我认为映射可观察数组时存在一些问题。

那么我做错了什么?请问有人吗?

如果我没有清楚地提到事情,请随时要求澄清。

提前致谢。

0 投票
1 回答
2388 浏览

knockout.js - 无法将 ko.observable 数组绑定到 foreach 循环

我有一个简单的 viewModel,我从 MVC 创建到 json 字符串,我正在使用 ko.mapping 来完成这个。

我想遍历这个数组并在页面上显示数据。我正在尝试使用 foreach 数据绑定。

但是,当我尝试运行时,出现以下错误。

“无法解析绑定。消息:ReferenceError:ticketViewModel 未定义;绑定值:foreach:ticketViewModel.Ticket”

任何帮助将不胜感激。

0 投票
3 回答
5521 浏览

knockout.js - 淘汰赛:添加到嵌套视图模型中的可观察数组

我有一些带有可观察数组的嵌套视图模型,并且无法成功添加到任何嵌套数组中。在顶层添加工作正常。我做了很多阅读和摆弄,试图解决我做错的事情,但无济于事。

层次结构如下:Queue-->Files-->Claims-->Lines

我可以将新文件添加到队列中,但无法添加新声明(通过文件和队列尝试)

任何想法我做错了什么? http://jsfiddle.net/bxfXd/254/

更新:下面的所有答案都指向我的核心问题——在我的可观察数组中使用原始数据而不是实例化模型。使用工作代码更新小提琴:http: //jsfiddle.net/7cDmg/1/

HTML

JavaScript

​</p>

0 投票
1 回答
1257 浏览

data-binding - 如何在 observableArray 发生变化时自动更新 UI?

您好,我有以下使用 knockout.js 的代码,

对 allJobberDetailsArray 的任何更改我想自动更新 UI 说添加更新或删除数组项我希望 UI 反映它。

我如何实现它?

编辑

在上面的代码中,我使数组本身可观察,并尝试在数组有任何更改时自动更新 UI 我如何实现它?

0 投票
5 回答
41883 浏览

knockout.js - 如何在 Knockout 中创建计算的可观察数组

我想知道如何创建一个计算的可观察数组。

在我的视图模型中,我有 2 个可观察数组,我想要一个计算的可观察数组,它只是两个数组的组合。