问题标签 [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 投票
2 回答
8694 浏览

javascript - Knockout.js:在选择元素中清除选择

我需要清除<select>元素中的选择。我已经阅读了诸如Knockoutjs clear selected value in combobox之类的帖子,并尝试了接受的答案,但这些解决方案似乎不起作用(不知道自答案被接受后 Knockout 2 中是否发生了变化?) .

这是一个示例视图模型:

调用时clearSelectedStation,绑定视图模型属性应设置为null,这应通过绑定<select>元素显示为空白并扩展选项列表显示没有突出显示的项目来反映在 UI 中。但是,我注意到的是,如果您尝试将绑定值属性 ( selectedStation) 设置为选项数组 () 之外的任何内容stations,则绑定似乎会被忽略。

这个小提琴说明了我在说什么:http: //jsfiddle.net/sellmeadog/Su8Zq/1/

如果不需要,我不想用空白值“污染”选项数组。我想知道如何使链接帖子中的解决方案起作用。

0 投票
2 回答
3346 浏览

javascript - 在 knockoutJS 中从 observableArray 中删除 Self

我正在使用 knockoutjs 创建部门的树视图。每个节点旁边将有三个按钮:1)新建子节点(应用于它旁边的节点 2)删除(这会删除它旁边的节点,以及 3)复制,它复制节点及其所有子节点并创建一个新的父节点下的节点。

我已经按下新建按钮,现在我正在处理删除按钮。我似乎无法让它工作,而不是做任何有用的事情,它只是刷新了整个页面。这是代码:

看法:

模板:

查看模型和适当的辅助函数:

在这一切中我的主要问题是:有没有办法访问对象的父数组以便从数组中删除该对象?在此先感谢您的帮助!

编辑:这是一个 jsFiddle:http: //jsfiddle.net/eqY7Z/但是它似乎根本不起作用。如果你们不能让它继续下去,我会附上我的网站的链接,这样你们就可以好好看看它了。

0 投票
1 回答
634 浏览

ajax - Knockout Mapping - 填充 Observable 数组以保持项目的方法

我一直面临一个基本上如下的问题:

  • 我有一个淘汰视图模型,其中包含具有可观察属性和方法的可观察项目数组。
  • 我需要从服务器中提取数据。从服务器获取数据后,方法需要存在。所以我创建了一个新的 ViewModel,然后根据来自服务器的内容更新它的值。(这不起作用,生成的数组没有项目)
  • 如果我使用生成的 Array创建mapping一个新对象,它有项目,但它的项目没有方法。它破坏了我的绑定。var newObj = ko.mapping.fromJS(data)

我的问题的小提琴:http: //jsfiddle.net/claykaboom/R823a/3/(它可以在您单击“从服务器加载数据”时使用)

最后一个问题是:在不使加载过程过于繁琐的情况下,将项目放在最终数组中的最佳方法是什么,例如遍历每个项目并填充项目的属性以保留先前声明的方法?

谢谢,

0 投票
1 回答
333 浏览

knockout.js - Knockoutjs ObservableArray

下面的代码片段——导致一个空的列表框。谁能告诉我做错了什么?

作品是 jsFiddle——不在浏览器中

0 投票
1 回答
205 浏览

javascript - Knockout 如何更新通过其他函数过滤的 ObservableArrays 上的绑定?

我一直在广泛使用 Knockout.js,但是我经常使用一种模式,我想了解它的实际工作原理。

通常我会有一些视图模型的 ObservableArray,例如 productModule.products()。然后,我将拥有各种过滤器函数,例如 productModule.getAvailableProducts(),它使用数组过滤器(我目前使用 Underscore.js)返回一个子集,该函数就是绑定到 UI 的函数。我不太明白的是,鉴于这些函数返回标准数组而不是 ObservableArray,当我更改底层 ObservableArray 时,Knockout 的绑定仍然会更新。这是一个示例小提琴:

http://jsfiddle.net/4RHks/19/

即使通过其他函数,Knockout 是否在绑定时确定特定绑定是否解析为 ObservableArray?如果是这样,链中是否可以存在任意数量的此类函数?

非常感谢任何有助于理解这一点的帮助。

0 投票
1 回答
1835 浏览

knockout.js - KO.utils.arrayPushAll 在选择更改时添加新元素到另一个选定的框和网格

我正在尝试从使用 knockout.js 库在 MVC4 中编写的 JSON 响应中提取数据。我有这三个区域需要填充,其中第一个是多选框。我查看了在线示例以及参考资料,以及此处链接的提琴手,但无济于事。我遇到问题的领域是使用 arrayOne 列表中选择的每个项目的所有数据填充 arrayTwo 和网格数组。

我已经尝试对响应进行 json-ing 以查看返回的内容,并返回数组形式的值。但是,如果 arrayOne var 中有多个元素,则不会返回任何内容。

0 投票
1 回答
8511 浏览

knockout.js - 淘汰 observableArray push - 不推送到数组

尝试玩 Knockout,但我在推送到可观察数组时遇到问题。我下面的代码通过单击按钮从服务器获取一些 json 数据,它返回一个对象数组。第一个 console.log 控制台很好,我的对象数组很好而且花花公子。

但是,我似乎无法将每个对象都推送到我的可观察数组上。控制台向我显示空数组。我已经尝试了几种变体,但感觉我只是错过了一些简单的东西,但我很难找到它。

我想要做的是从服务器加载一些数据,把它放在一个可观察的数组中,我可以绑定到模板并执行类似 foreach 的操作来输出数组的内容。

0 投票
1 回答
9031 浏览

indexing - KnockoutJS:从 JavaScript 模板中访问数组中项目的索引

我使用 KnockoutJS 从数组中填充一个列表:

我可以像这样为输入的各个实例分配一个 id

如何从我的 listItem 函数中访问此索引?我希望能够做类似的事情

以便将其用于进一步处理。

0 投票
1 回答
246 浏览

knockout.js - 淘汰赛 - 过滤我的数据有一点问题

编辑:我认为问题出在我的 self.providers = ko.computed() 上,我在单击过滤器按钮时覆盖了我的提供程序数组;

我有两个问题,在 HTML 窗格中都有所有内容,因为我在本地开发所有内容,并且将整个文件复制/粘贴到 jsfiddle 中而不是将其拆分出来更容易。

我还在一个相当大的虚拟数据对象中存根。 这从第 110 行开始,因此如果您在本地复制/粘贴/运行它,您肯定需要一个可以最小化该数据对象的编辑器

第一个小提琴位于http://jsfiddle.net/82cK7/并且似乎工作正常,但它是“实时”过滤。我刚从提供者名称过滤开始,然后也添加了 jquery UI datepicker 来进行日期过滤。当您在绿色过滤器区域进行任何更改时,这将过滤数据表。

这里的相关代码是第196 行的self.filterClaims

第二个小提琴位于http://jsfiddle.net/tq8zc/并不能很好地工作。在您单击“过滤器”按钮之前,此处的过滤不会启动(这是我真正想要的行为)。它过滤了表格,但它也炸毁了我的self.providers,它为该选择/下拉列表生成了一个唯一的提供者名称列表。因此,在您过滤它之前,您有一个包含多个提供者名称的列表。过滤后,您只有在点击“过滤器”之前选择的提供商。

这里的相关代码是第166 行的self.claimsFiltered

我觉得我错过了一些非常明显的东西,我想知道我是否可以让另一只眼睛看着代码。

非常感谢您的帮助!

0 投票
1 回答
624 浏览

javascript - 第二次点击时,knockout.js 和 observableArray 不更新 DOM

我已经查看了很多以前的答案,并尝试了几件事,但我没有做任何事情让我在第二次尝试 applyBindings 时更新我的​​ DOM。

看看下面的小提琴,它演示了这个问题。

http://jsfiddle.net/rARfx/4/

当我通过 $.getJSON() IRL 提取数据时,小提琴仍然重现了我摆弄的内联 JSON 和那里的代码的问题。

我尝试过的东西都被注释掉了(will/hasMutated、replace、removeAll)。

我希望完成的是,我的图 X(Usher)的五个新闻项目的元素将被更新/替换为图 Y(罗韩)的五个新闻项目,但如果我什至可以的话,这将是一个进步的迹象获取附加到 0-4 的元素 5-9 并查看 10 li 标签。

要重现该问题,请运行 fiddle,然后单击“Do It Again”链接以模拟 JSON 加载,并注意它不会显示新的数据元素,而是生成一个没有子元素的空白 ul 标记。