Javascript 带ng重复的角度1.5过滤器不按id轨迹工作

Javascript 带ng重复的角度1.5过滤器不按id轨迹工作,javascript,angularjs,angularjs-ng-repeat,angular-material,javascript-objects,Javascript,Angularjs,Angularjs Ng Repeat,Angular Material,Javascript Objects,所以我尝试了很多不同的方法来完成这件事。跟踪了这么多StackOverflow,无法使其工作。我所要做的就是根据布尔属性的值过滤一些列表项。下面是我的对象数据的图片。我下面最接近的例子就是这个问题。仍然不起作用。它是否与对象文字有关,并且这种带有属性的过滤类型仅适用于数组?我是javascript新手,所以不确定。另外使用角度材质、虚拟重复容器和其他基于材质的东西都不会影响结果,我可以显示整个数据,只是被这个特定属性过滤后不起作用 loadAssets=()=>{ var self=这个; se

所以我尝试了很多不同的方法来完成这件事。跟踪了这么多StackOverflow,无法使其工作。我所要做的就是根据布尔属性的值过滤一些列表项。下面是我的对象数据的图片。我下面最接近的例子就是这个问题。仍然不起作用。它是否与对象文字有关,并且这种带有属性的过滤类型仅适用于数组?我是javascript新手,所以不确定。另外使用角度材质、虚拟重复容器和其他基于材质的东西都不会影响结果,我可以显示整个数据,只是被这个特定属性过滤后不起作用
loadAssets=()=>{
var self=这个;
self.infiniteasets={
加载数量:0,
toLoad_u0:,
项目:[],
pageNum:1,
虚拟索引:0,
getItemAtIndex:函数(索引){
这个.virtualIndex=索引;
如果(索引>此.numloated_u41;{
此.fetchMoreItems(索引);
返回null;
}
返回此.items[索引];
},
//必需的。
getLength:函数(){
如果(this.virtualIndex>this.numLoaded){
返回此.numloated\ux;
}否则{
返回此.numloated+5;
}
},
fetchMoreItems:函数(索引){
if(this.toLoad<索引){
自加载=真;
此.toLoad+等于20;
self.siAsset.getAssets(this.pageNum++,20)
.then(angular.bind)(此,函数(资产){
//this.objLength=assets.length;
如果(!assets.statusCode){
this.items=this.items.concat(资产);
this.toLoad=this.items.length;
this.numLoaded u=this.toloaded;
}
自加载=错误;
}))
}
}
};
console.log('++',self.infiniteasets)

{{asset.name}}

{{'LABELS.DISABLED'| translate}} {{asset.status | |'UNKNOWN'}
正如您所说,
带ng重复的角度1.5过滤器不按id跟踪工作“

我使用
AngularJs 1.5
创建了示例,并使用了带有track by on
ng repeat
的过滤器

angular.module('controllerAsExample',[])
.控制器(“设置控制器1”,设置控制器1);
函数设置控制器1(){
此.infiniteasets=[
{disabled:false,name:'test0',id:234},
{disabled:true,name:'test1',id:123},
{disabled:false,name:'test2',id:345}
];
//console.log(this.infiniteasets);
}

ng使用angularjs 1.5.0通过田径场示例重复:

  • {{asset.name}
正如您所说,
带ng重复的角度1.5过滤器不按id跟踪工作“

我使用
AngularJs 1.5
创建了示例,并使用了带有track by on
ng repeat
的过滤器

angular.module('controllerAsExample',[])
.控制器(“设置控制器1”,设置控制器1);
函数设置控制器1(){
此.infiniteasets=[
{disabled:false,name:'test0',id:234},
{disabled:true,name:'test1',id:123},
{disabled:false,name:'test2',id:345}
];
//console.log(this.infiniteasets);
}

ng使用angularjs 1.5.0通过田径场示例重复:

  • {{asset.name}

你确定
md virtual repeat
与过滤器一起工作吗?AngularJS Materials virtual repeat是ng repeat的自定义实现,因此你不能期望它与原始版本完全一样工作。以下是文档中的内容

虚拟重复是仅渲染的ng重复的有限替代品 足够的DOM节点来填充容器并作为用户回收它们 卷轴

迭代支持数组,但不支持对象 别名和(键、值)语法不受支持


我会将过滤移到您的控制器中,只要确保在集合更改时重新应用过滤器。

您确定
md virtual repeat
与过滤器一起工作吗?AngularJS Materials virtual repeat是ng repeat的自定义实现,因此您不能期望它与原始版本完全一样工作。以下是从文档中删除

虚拟重复是仅渲染的ng重复的有限替代品 足够的DOM节点来填充容器并作为用户回收它们 卷轴

迭代支持数组,但不支持对象 别名和(键、值)语法不受支持


我会将筛选移到您的控制器中,只要确保在集合更改时重新应用筛选即可。

您是否可以插入一个plunker而不是代码段?这将非常有助于解决问题按值跟踪\u to\u be\u trackedby对于列表中的每个项(如$index或id等)都应该是唯一的。