我正在使用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是如何工作的,无法理解它是否会。
在我提供的链接中,表达式被重新定位,但我不能让它工作,也不能真正理解它试图在那里做什么。
https://stackoverflow.com/questions/47866324
复制相似问题