我从数据库中拉出2条数据。每个返回在JSON对象的阵列的形式,存储在角$范围的变量,并且看起来像这样:设置角度过滤器:true不起作用
$scope.data =
[{ code: 1, text: cat },
{ code: 2, text: dog },
{ code: 10, text: cow }]
$scope.data2 =
[{ code1: 1, code2: F1, text: meow},
{ code1: 2, code2: F2, text: woof},
{ code1: 3, code2: F10, text: moo}]
$scope.data
准确地说是11个物体的阵列,其中每个对象的code:
字段被1,2,3,4,5,6,7,8,10,11,12. $scope.data2
是一个包含100个对象的数组,其中code2:
字段可以是F1,F2,F3,F4,F5,F6,F7, F8,F10,F11,F12。
我再有都是由这两个数组,填充,看起来像两个HTML元素<select>
如下:
Option 1<select data-ng-model="dataCode" data-ng-options="a.code as a.text for a in data"></select>
Option 2<select data-ng-model="data2Code" data-ng-options="a.code1 as a.text for a in data2
| filter: { code2: 'F' + dataCode }"></select>
我想要实现的功能是,当您从$scope.data
选择一个项目,它会根据代码过滤在$scope.data2
中显示的项目。这个逻辑起作用,但是这只能通过子字符串进行过滤。即如果选择代码为1的cat,则过滤器将返回喵喵声以及moo,因为moo的代码是F10,F1是F10的子串。
我想按精确匹配进行过滤。所以我搜索了stackoverflow并发现了一些其他人问同样的问题。接受的答案大部分都是相同的:将:true
比较器附加到过滤器。但是,当我尝试并将其更改为filter: { code2: 'F' + dataCode } : true
时,该筛选器匹配0个结果,并且我得到一个空的<select>
下拉列表,没有任何选择。将其设置为false或仅删除比较器就可以解决问题,但这不再是完全匹配。
我试过切换到使用<option>
元素而不是ngOptions
,但无济于事。我想也许它与我在过滤器中混合一个字符串('F' + dataCode
)有关,所以我尝试使用dataCode.toString()
,但那也不起作用。任何人都可以弄清楚我做错了什么,或者帮助我创建一个自定义过滤器,如果这不能被修复?
它为我http://plnkr.co/edit/9FjFAyvC1wTQ2hRaUzNr?p=preview工作。你使用什么角度的版本?我还注意到,你的数据中的'code2'和'text'属性值没有引号 – PrinceG