我正在使用aurelia,并想在视图中而不是视图模型中过滤集合(数组)。
我正在尝试使用以下语法:
<div class="col-sm-7 col-md-7 col-lg-7 ${errors.filter(function(err){return err.Key==='car.Model';}).length >0? 'alert alert-danger' :''}"> <span repeat.for="error of errors"> <span if.bind="error.Key==='car.Model'"> ${error.Message} </span> </span> </div>
而且我在浏览器控制台中遇到以下错误:
Error: Parser Error: Missing expected ) at column 28 in [errors.filter(function(err){return err.Key==='car.Model';]。
Error: Parser Error: Missing expected ) at column 28 in [errors.filter(function(err){return err.Key==='car.Model';]
在angularJS中,这是可能的,如下所示:
<div class="small-7 medium-7 large-7 columns end"> <span class="error" ng-repeat="error in errors | filter:{ Key: 'car.Model'}"> <span class="error-message"> {{error.Message}} </span> </span> </div>
奥雷利亚是否也可能有类似的事情?
我也很想知道如何repeat.for在aurelia中过滤集合/数组(类似于ng- repeat)。我试图以类似的方式使用过滤器功能,但是它也无法正常工作,并且出现了类似的错误。
repeat.for
ng- repeat
有点尴尬。但是经过一番研究(我应该事先做过:P),我得到了答案。
可以使用ValueConverter完成,如下所示:http ://jdanyow.github.io/aurelia-converters-sample/ 。
而且我认为这很酷。
现在我的代码如下:
<div class="col-sm-7 col-md-7 col-lg-7 alert alert-danger" if.bind="errors | hasPropertyValue:'Key':'car.Model'"> <span repeat.for="error of errors | filterOnProperty:'Key':'car.Model'"> <span> ${error.Message} </span> </span> </div>
我在TypeScript(valueconverters.ts)中定义了几个valueconverters :
valueconverters.ts
export class FilterOnPropertyValueConverter { toView(array: {}[], property: string, exp: string) { if (array === undefined || array === null || property === undefined || exp === undefined) { return array; } return array.filter((item) => item[property].toLowerCase().indexOf(exp.toLowerCase()) > -1); } } export class HasPropertyValueValueConverter { toView(array: {}[], property: string, exp: string) { if (array === undefined || array === null || property === undefined || exp === undefined) { return false; } return array.filter((item) => item[property].toLowerCase().indexOf(exp.toLowerCase()) > -1).length > 0; } }
最后,我认为这些是导入的: <import from="yourPath/valueconverters"></import>
<import from="yourPath/valueconverters"></import>