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

knockout.js - ko.observablearray 的附加功能,如 removeall,indexOf 不支持

我有两个 ko.observablearray。我用从服务器获得的一些值填充的数组之一:

`self.AllItems = ko.observableArray([]);

第二个数组包含我从模型的特定属性中获得的数据。

这工作正常。

现在我基本上想从“allitems”中删除“selecteditems”。

我试过

那没有用。然后我在尝试indexOf时遇到异常,说该对象不支持此操作。我彻底糊涂了。请告诉我哪里出错了。

0 投票
0 回答
142 浏览

jquery-ui - 向上移动数组时敲除可排序中断

有没有人见过这个?我正在使用可排序的淘汰赛,当我在我的 OL 中抓取一个 LI 元素并将其拖到屏幕上时,有效地将其从淘汰赛数组中的较高元素移动到较低元素(从 4 移动到 0)一切正常。

但是,当我从 0 移动到 4 时,当我查看它而不是具有属性ko29481270e89u012987 ="ko234"的项目时,传递的每个项目似乎都在标记中丢失了它的淘汰赛 ID,它只是读取为 null。

这只发生在 IE8 中,我正在使用:

淘汰赛排序 0.8.1 jquery-ui 1.10.x jquery 1.10.x 淘汰赛 2.2.1

在最新的 Chrome、Firefox 和 IE9 中没有问题。我还应该说包含可排序列表的页面托管在 SharePoint 中。

0 投票
1 回答
782 浏览

knockout.js - ko.Observable 数组包含数据,但它的长度属性值为 0

我有一个 ko.observablearray。我正在填充一些从服务器获得的值:

我知道这很好用,因为我将数组绑定到列表并包含所有项目。

但是,之后我无法访问 AllItems 的任何元素。 alert(self.AllItems().length);-- 返回 0

alert(self.AllItems());-- 不返回任何内容

请帮忙。

0 投票
1 回答
662 浏览

javascript - 淘汰赛、Web API 和 SignalR - 未捕获的 TypeError

我正在尝试为我的 observableArray 的元素设置一个值,并得到一个我无法解决的错误:

这是我写的一段代码:

HTML - 淘汰赛绑定

我在分配值时做错了什么?我也试过这样做:brand.Locked = true; . 这次我没有收到任何错误,但淘汰赛没有响应。

0 投票
1 回答
272 浏览

knockout.js - 在 Knockoutjs 中,我们可以在 SINGLE ObservableArray 中声明 MULTIPLE ObservableArrays 吗?

这些多个 ObservableArrays 将是该 Single ObservableArray 的单个元素。

我有两个 ObservableArrays,例如:

现在我想要的是,我希望self.Criteria成为self.matrix中的成员元素。. . 能否请您给我编写应该实现我的目标的代码的语法或方式。

我是新手。. . 所以请原谅我的错误:)

编辑:我已经完成了将标准observablearray 放入矩阵observablearray 的部分。现在我想访问条件observablearray 的条件字段(它在矩阵 observablearray 内!!!)那么我该怎么做呢?

0 投票
1 回答
1533 浏览

binding - observableArray 中单个对象的双向绑定

我的页面如下:

javascript如下:

预习:

在此处输入图像描述

在图片中,我单击与 id = 3 的学生对应的选择。另一个表显示了所选学生的详细信息。假设我在文本框 1 中输入了一些内容,文本框 2 没有更新,反之亦然。

怎么做才能做到这一点?

小提琴:http: //jsfiddle.net/deostroll/YdrQf/1/

0 投票
2 回答
1306 浏览

javascript - 如何在淘汰赛 foreach 中附加到现有元素而不是创建新元素

这是一个小众案例,但我有一个简单的聊天室风格场景。

所以会有一个可观察的聊天条目数组(这可能会限制为 100 个条目,这些条目会被分页以保持良好的性能)。

所以当前的 foreach 看起来像:

目前,它会为每个条目添加一个新的聊天条目,这很好,看起来像这样:

现有的聊天系统

但是,如果下一个帖子是由同一个人发布的,现在需要仅附加到现有的聊天条目,就像这样(原谅可怕的油漆工作)。

所需的聊天系统

而且我不知道如何在淘汰赛中做到这一点......我在想我可以做一个 afterRender 并检查它是否与以前的条目海报相同然后删除所有创建的 dom 并找到以前的条目并使用 jquery或者只是附加元素,但这感觉非常hack-ish,因为我手动操作dom。

那么有什么好的方法可以解决这个问题吗?

== 编辑 ==

只是为了澄清一些事情,目前我总是在有新条目进入时附加到可观察数组,但是有一个论点是每次有新条目进入时都重新创建数组,因为这会简化事情位,但不确定这样做与仅附加单个条目的明显影响。

目前在截止点之后有一个 50 的缓冲区,所以主数组存储大约 100,然后将允许另外 50%(最多 150 个条目),然后一旦超过,它将切断最后 50 个条目并重新创建数组,所以再次有 100 个条目,然后用户可以翻页查看以前的条目。所以这减少了娱乐性,但听起来可能最终会变得更加复杂。所有进来的聊天都本地存储在localstorage中,所以不需要服务器就可以快速分页,所以不用担心丢失聊天数据。

0 投票
3 回答
5162 浏览

knockout.js - 通过索引将元素分配给 knockout.js observableArray 的正确方法是什么?

我一直在查看knockout's的文档observableArray,但我无法弄清楚如何使用数组执行最基本的操作之一:按索引分配值。

我尝试过的事情:(给定oa = ko.observableArray([1,2,3])

  • oa(1, 10);
  • oa[1] = 10;
  • oa()[1] = 10;
  • oa.splice(1, 1, 10);

最后一个似乎有效,但我担心这.splice()可能效率低下,因为它必须关注转移所有后续值。我宁愿只做简单的基于索引的分配。

创建了一个显示 observableArray 很奇怪的 jsfiddle。

0 投票
0 回答
258 浏览

ajax - .push 后 observablearray 未更新

我有一个简单的网页,用户可以在其中检查他们的卡片组,删除和添加卡片,我正在使用淘汰赛来保持简单。当我单击一个按钮时,将执行以下代码:

服务应该从我的牌组中移除一个项目并归还我的新牌组。这部分有效,如果我检查返回的数据,我实际上可以看到我的新牌组。之后,我想用新数据重新填充 view_model 中的甲板,并且淘汰赛应该更新 DOM 以反映更改。我为每个项目创建新元素只是因为我为每个项目添加了一些 ko.computed 和方法。下面是控制台输出:

也是我的标记:

我删除了一些,因为它不相关。我应该补充一点,我已经在使用非常相似的一段代码(除了 URL 和数据发送不同)来在页面加载时获取用户界面。谢谢你的帮助。

编辑:

根据要求添加了 createElement 函数:

0 投票
1 回答
1214 浏览

knockout.js - ko.observablearray 更改时表未更新

我正在将 ko.observablearray 绑定到表。数组中的每个对象(称为“组”)都绑定到一个表。每个组都持有另一个(非淘汰赛)代码数组。每个代码都绑定到一行。每个代码都有一个布尔值,绑定到一个复选框。

如果组中没有一个布尔值为真,我希望启用该组的所有复选框。如果组中至少有一个布尔值为真,我希望禁用该组的错误复选框,并启用真正的复选框。加载页面后,这将按预期工作;但是,当我选中或取消选中某个框时,框的启用/禁用状态不会改变。用调试器看,observablearray 正在更新,但是表中的数据没有。

页:

测试组中是否有任何真值的 Javascript 函数:

小提琴:http: //jsfiddle.net/NSLPu/2/