如何有条件地推送可观察数组中的项目?
我想将一个新项目push
到observableArray
上,但前提是该项目尚不存在。 KnockoutJS 中是否有任何“查找”功能或推荐模式来实现此目的?
我注意到 observableArray
上的 remove
函数可以接收一个用于传递条件的函数。我几乎想要相同的功能,但仅在传入的条件为真或不为真时才推送它。
I would like to push
a new item onto an observableArray
, but only if the item is not already present. Is there any "find" function or recommended pattern for achieving this in KnockoutJS?
I've noticed that the remove
function on an observableArray
can receive a function for passing in a condition. I almost want the same functionality, but to only push it if the condition passed in is or is not true.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
observableArray 公开一个
indexOf
函数(包装到ko.utils.arrayIndexOf
)。这允许您执行以下操作:如果两者实际上不是对同一对象的引用,并且您想要运行自定义比较逻辑,那么您可以使用 ko.utils.arrayFirst,如下所示:
An observableArray exposes an
indexOf
function (wrapper toko.utils.arrayIndexOf
). This allows you to do:If the two are not actually a reference to the same object and you want to run custom comparison logic, then you can use
ko.utils.arrayFirst
like:谢谢RP。以下是使用您的建议通过视图模型中对象的“id”属性返回“name”属性的示例。
在 HTML 中,我有以下内容($parent 是因为它位于表行循环内):
Thanks RP. Here's an example of using your suggestion to return the 'name' property via the object's 'id' property from within my view model.
In HTML, i have the following ($parent is due to this being inside a table row loop):
在 ko.observableArray 中搜索对象
http://jsfiddle.net/rathore_gee/Y4wcJ /
search a object in a ko.observableArray
http://jsfiddle.net/rathore_gee/Y4wcJ/
我会在更改之前添加“valueWillMutate()”,在更改之后添加“valueHasMutated()”。
I would add "valueWillMutate()" before changes and "valueHasMutated()" after them.