Javascript 在接头上更新WinJS.Binding.List

Javascript 在接头上更新WinJS.Binding.List,javascript,windows-8,winjs,windows-8.1,Javascript,Windows 8,Winjs,Windows 8.1,我正在使用Javascript和winJS框架构建一个类似于Windows8网格应用程序模板的应用程序。对于我的一个页面,我的很多项目都有相同的值,我使用.createFiltered为每个不同的值返回了1个项目。这对于添加新项非常有用,因为.createFiltered方法会更新并检查我的新项是否有新值 我遇到的问题是删除项目。当我拼接WinJS列表时,有可能是删除了.createFiltered方法为重复值返回的项,但仍有其他具有该值的项。因此,我需要重新运行.createFiltered,

我正在使用Javascript和winJS框架构建一个类似于Windows8网格应用程序模板的应用程序。对于我的一个页面,我的很多项目都有相同的值,我使用.createFiltered为每个不同的值返回了1个项目。这对于添加新项非常有用,因为.createFiltered方法会更新并检查我的新项是否有新值

我遇到的问题是删除项目。当我拼接WinJS列表时,有可能是删除了.createFiltered方法为重复值返回的项,但仍有其他具有该值的项。因此,我需要重新运行.createFiltered,然后选择其他项

我给你举个例子。

我有5个项目,其中两种类型之间的“苹果”和“香蕉”

在我的主页上,我把这些物品分为水果/蔬菜/糖果。这5个项目都属于水果,但我不想给它不同的品牌,我只想让它说“苹果”和“香蕉”,所以我有一个函数,将每种类型得到一个项目,并将其绑定到一个WinJS.Binding.Template,然后使用“textContent:type”来显示苹果/香蕉

假设我有两个苹果“Gala”和“Granny Smith”,我已经将“Gala”的数据绑定到主页,然后我的“Gala”苹果用完了(删除它)。我还有苹果库存(Granny Smith),所以我需要重新运行.createFiltered函数,因为主页不再在水果下显示“苹果”


谢谢你

写这篇文章以来,我设法找到了一种方法让它发挥作用。我所做的是找到我要删除的项的值,然后检查数组,看看是否可以找到另一个具有该值的项。然后我将其从列表中删除,然后重新添加,从而导致.createFiltered处理该项

确切代码:

function dashRefresh(toDelete) {
    //Project Key of Deleted Item
    var deletedProjectKey = toDelete.data.project.key;
    //Use new item to bind project data
    var newProjectBinder = 0;
    var newProjectBinderIndex;

    for (var i = 0; i < list.length; i++) {
        var listItem = list.getAt(i);
        if (listItem.project.key == deletedProjectKey) {
            newProjectBinder = listItem;
            newProjectBinderIndex = i;
            i = list.length;
        }
    }

    if (newProjectBinder != 0) {
        list.splice(newProjectBinderIndex, 1);
        list.push(newProjectBinder);
    }
}
函数dashRefresh(toDelete){
//已删除项目的项目密钥
var deletedProjectKey=toDelete.data.project.key;
//使用新项绑定项目数据
var newProjectBinder=0;
var newProjectBinderIndex;
对于(变量i=0;i