我正在使用Aurelia和Typescript并且有一个自定义元素,在传递数据后生成一个表,我希望显示的表的字段是基于我传入的数组生成的,然后使用值转换器来改变某些显示的方式, 我正在尝试创建一个自定义绑定,因此绑定是从传入的数组动态生成的,并且一直在遵循本指南:https://blog.ashleygrant.com/2017/07/09/getting-my-hands-dirty-with-aurelias-binding-engine/虽然我无法让它完全正常工作,但不得不改变一些位
我调用自定义绑定的HTML
<require from="services/custom-binding/dynamic-binding-behaviour"></require>
<require from="services/data-format"></require><!--ValueConverters-->
...
<tbody>
<tr repeat.for="ticket of listData">
<td repeat.for="fieldTest of listDisplay">${ticket & dynamic:'ticket':fieldTest}</td>
</tr>
</tbody>
自定义绑定类
@inject(Parser)
export class DynamicBindingBehavior {
constructor(private parser: Parser) {
}
bind(binding: BindingWithStorage, source: Scope, dataItem: string, args: FieldList) {
let arg = dataItem + '.' + args.field;
if (args.valueConverter) {
arg += ' | ' + args.valueConverter;
}
let parsedExpression: Expression = this.parser.parse(arg);
binding.originalSourceExpression = binding.sourceExpression;
binding.sourceExpression = parsedExpression;
}
unbind(binding: BindingWithStorage, source: Scope) {
console.log('unbind');
if (binding.originalSourceExpression) {
binding.sourceExpression = binding.originalSourceExpression;
}
binding.originalSourceExpression = null;
}
}
当我运行此数据时,数据将在某些表格单元格显示之前显示[object Object],然后开始按照我的预期显示。每次我导航到新页面或刷新它将完全相同的行和列,它将开始正确显示所以我想这是与aurelia生命周期有关。
console.log('unbind')从不在控制台中显示,所以我不确定这是否也是问题的一部分,我不太了解Aurelia如何理解它是否会。
在我提供的链接中,表达式已被重新命名,但我无法使其工作,并且无法真正理解它在那里尝试做什么。
答案 0 :(得分:0)
这是我前一段时间制作的原型。从来没有实现编辑片。支持冻结列,分组并使用虚拟化处理大量数据。
https://gist.run/?id=9782317010240c90fc30e179eeb41064
https://gist.github.com/jdanyow/9782317010240c90fc30e179eeb41064