将对象直接传递给值转换器,而不是手动将其复制到新对象

时间:2016-06-27 21:30:35

标签: javascript html single-page-application aurelia valueconverter

我们将对象参数传递给以下value converter

export class SortValueConverter {
  toView(array, config) {
    // do stuff
  }
}

我们通过手动将对象复制到新对象来将对象传递给值转换器。

<select value.bind="config">
    <option repeat.for="s of sortOptions"
            model.bind="s.config">${s.friendlyName}
    </option>
</select>

<div repeat.for="u of users | sort:{ prop: config.prop, dir: config.dir}">

我们希望直接传递对象。

<div repeat.for="u of users | sort:config">

我们怎么能这样做?

1 个答案:

答案 0 :(得分:2)

你应该能够按照自己的方式完成。请查看此示例:https://gist.run/?id=49d1b3acf5fe7d168909a4f49dca152e

<强> MyItem.html

<select value.bind="config">
    <option repeat.for="s of sortOptions"
            model.bind="s.config">${s.friendlyName}
    </option>
</select>
<div repeat.for="u of users | sort:config">

MyItem.js 请确保为您的配置设置默认值!

export class MyItem {
  users = [];
  config;
  sortOptions = [
    { config: { propertyName: 'aaa', direction: 'ascending' }, friendlyName: 'aaa' },
    { config: { propertyName: 'bbb', direction: 'descending' }, friendlyName: 'bbb' },
    { config: { propertyName: 'ccc', direction: 'descending' }, friendlyName: 'ccc' }
  ];

  constructor(userRepo: UserRepository) {
    this.config = this.sortOptions[0];
  }
}