我有一个我想在几个ViewModel中使用的函数。这是一个过滤函数,我用它作为自定义过滤器的参数:
<tr repeat.for="server of servers | filter:searchTerm:filterFunc">
存储这样的功能的“aurelic”方式是什么?我对js和aurelia都很陌生,所以一个容易理解的“非缩小”的例子会让我感激不尽: - )
编辑:作为参考,我把函数放在我的ValueConverter类中,因为它只会与它一起使用。
export class filterValueConverter {
myCustomFunc(stuf,stuf){}
toView(array, searchTerm){return this.myCustomFunc}}
答案 0 :(得分:4)
您可能需要为数组创建一个值转换器来执行此操作。
视图中的Html:
<div repeat.for="item of [1, null, 2] | notNullFilter">${item}</div>
过滤器(src \ resources \ value-converters \ notNullFilterValueConverter.js):
export class notNullFilterValueConverter {
toView(array) {
return array.filter(item => item !== null);
}
}
在main.js设置中将其注册为全局资源:
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.globalResources([
"./src/resources/value-converters/notNullFilterValueConverter"
]);
aurelia.start().then(() => aurelia.setRoot());
}
您可以在为全局资源函数提供的数组中插入任意数量的值转换器。
将输出
<div>1</div>
<div>2</div>
如果在某个阶段,这会变得阴暗/混乱,您可以将其移动到一个功能:
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature('resources');
aurelia.start().then(function () { return aurelia.setRoot('views/app'); });
}
添加名为&#39; resources&#39;的文件夹。使用index.js中的文件
export function configure(config) {
config.globalResources('./notNullFilterValueConverter', './welcomeValueConverter');
}
A&#39;功能&#39;与插件相同,只是它存在于源代码树中。它允许您创建多个功能,因此可能有一个名为company-array-filters和一个custom-company-elements。