2013-06-24 92 views

回答

0

如果你打算使用严格模式('use strict';),你需要声明你的变量。您的checkboxFilter使用了许多从未定义的变量(包括i)。您可以通过更改的script.js闯过您最初的问题:22-23:

 var i,j,k,filter_cat,filter_value,filter_name,matchingItems = []; 

你之后其他三个问题......

  1. 37号线,此代码是寻找一个名为filter_catitems[i].filter_cat的属性,当你想要的是寻找一个属性名称的值为filter_cat,所以这是你想要的:items[i].[filter_cat]
  2. 您的JSON数据有小写字段名称和您的代码搜索的大写字母(类型VS型)
  3. 您的JSON数据有小写的价值观和你的代码是在这里寻找在大写字母(水果VS水果)

是一个部分编辑,让你走上正轨。你仍然需要修改你的json或比较小写(我部分修改了你的json):http://plnkr.co/edit/d7p4QthXJg4ao34ATWla?p=preview

+0

谢谢!我复制''严格';'从角种子,现在我明白它在做什么。你解决了我的问题。现在,我的代码仍然有一个错误:'TypeError:无法读取未定义的属性'长度'。但是当我'console.log(prefs)'时,数组被返回。任何想法 ? –

+0

是的,你需要编写更多的防御性代码。基本上把'if(prefs){}'包围在你的'for(j = 0 ...'循环中,这是因为竞争条件...你在使用ngResource并在你的过滤器中引用'$ scope.users'它已经加载 – Langdon

+0

好的,我纠正了所有的错别字,以及你指出的错误,非常感谢,它在页面加载时更新(更新了plunker),每当我点击一个复选框,或者当我点击一个按钮? –