【发布时间】:2017-12-18 10:20:42
【问题描述】:
我正在使用 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 的工作原理,无法理解它是否会。
在我提供的链接中,表达式被重新设置,但我无法让它工作,也无法真正理解它在那里试图做什么。
【问题讨论】:
-
您应该提供一个要点。还有一个问题:行为文件名是否正确?
-
文件名肯定是正确的,对于显示的部分数据,该行为按预期工作,我希望这是我正在制作的代码中的一个明显错误,我会尝试在周末吧
标签: typescript aurelia