2017-05-11 51 views
0

我有下面的阵列显示,

$ scope.selectionCat = [ '1', '3', '4']

在HTML正在呼叫等

< DIV DIR-PAGINATE = “在项目项| filterForCat:这个” >

自定义过滤器

.filter('filterForCat', function() { 
    return function (item, scope) { 
    return (scope.selectionCat.indexOf(item.category_id.id) !== -1); 
    }; 
}) 

当我试图read'scope.selectionC在'值得到错误'不能读取属性'ID'未定义'

我可以得到任何帮助来解决这个问题吗?

+2

'category_id'是不确定的。你是否证实它存在于'item'上? –

+0

是的,我已经验证..当我安慰它获取对象数组.. – Raghav

+0

在模板中没有'this'这样的事情。不要通过范围。通过选择卡。 –

回答

1

猜猜要筛选项目其中的ID是由scope.selectionCat包括在内,如@JB Nizet评论说,你不应该传递范围(this)来过滤您可以但应该使用过滤这种方式避免,和你必须返回过滤结果不只是表达式的真/假。

此外,对于您正面临的错误将通过Array.filter解决,如果项目中没有数据,将不会执行Array.filter的回调。

这里你过滤可以这样写下面

.filter('filterForCat', function() { 
    return function (items, selectionVat) { 
    return items.filter(function(item) { 
     return selectionCat.indexOf(item.category_id.id) !== -1 
    }); 
    }; 
}) 
+0

其工作..谢谢你的答复..非常感谢 – Raghav

相关问题