aurelia 视图中的过滤器数组
Filter array in aurelia view
我正在使用 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';]
.
这在 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>
aurelia 也可以做类似的事情吗?
我也很想知道如何在 aurelia 的 repeat.for
中过滤 collection/array(类似于 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
):
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>
很高兴学习如何以类似的方式使用 Aurelia。如何像下面的 angular 1 代码那样获取筛选列表的计数?
<div class="small-7 medium-7 large-7 columns end">
<span class="error" ng-repeat="error in filtered = (errors | filter:{ Key: > 'car.Model'})">
<span class="error-message">
{{error.Message}}
</span>
</span>
</div>
<div class="row text-center" ng-if="errors.length>0">
Total records: {{filtered.length}}
</div>
我正在使用 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';]
.
这在 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>
aurelia 也可以做类似的事情吗?
我也很想知道如何在 aurelia 的 repeat.for
中过滤 collection/array(类似于 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
):
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>
很高兴学习如何以类似的方式使用 Aurelia。如何像下面的 angular 1 代码那样获取筛选列表的计数?
<div class="small-7 medium-7 large-7 columns end">
<span class="error" ng-repeat="error in filtered = (errors | filter:{ Key: > 'car.Model'})">
<span class="error-message">
{{error.Message}}
</span>
</span>
</div>
<div class="row text-center" ng-if="errors.length>0">
Total records: {{filtered.length}}
</div>