jsViews 排序 - 如何在 属性 更改时自动更新排序

jsViews sort - how to automatically update the sort when a property changes

只需查看 jsViews 站点上的实时示例代码: https://www.jsviews.com/#jsvfortag@jsvsortfilterrange

如果我修改此行以包含排序:

{^{for members sort='name' start=start-1 end=end}} 

观察到向数组中添加项目后,数组没有重新排序。

$.observable(team.members).insert(0, {name: "zzz this should be last"})

知道如何在插入项目后触发排序吗?

当有数组更改事件时,排序会刷新。如果您单击 [添加] 或 [x] 删除项目,则输入 sort='name' 将重新排序。但是您想要的是每当您更改项目中的名称 属性 时触发重新排序。

但是你不希望它在输入字符时重新排序,所以首先要设置:

<input data-link="name trigger=false" />

有关触发器设置,请参阅文档 here(在上面完成时作为全局设置的本地覆盖)。

接下来,您可以通过编写

以声明方式使项目列表取决于每个项目上的名称文本
{^{for members sort='name' depends='members.[]^name'}}

depends='members.[]^name' 功能的文档很少,但它是响应任何项目的个别 属性 更改(此处为 name 属性)的通配符在数组中。

有关使用它的示例,请参阅 https://www.jsviews.com/#samples/sort-filter@jsv-for

您还可以 depends='members.[]^*' 响应任何数组项的更改 属性。

并且 depends='members.**' 也可以工作,用于监听成员数组下​​的任何变化(参见文档 here

这是一个使用上述 depends='members.[]^name' 方法的工作示例:

https://jsfiddle.net/BorisMoore/b51tu27n/