组织aurelia的全球职能

时间:2016-09-04 23:31:29

标签: aurelia

我有一个我想在几个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}}

1 个答案:

答案 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。