Aurelia自定义绑定错误

时间:2017-12-18 10:20:42

标签: typescript aurelia aurelia-binding

我正在使用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生命周期有关。 Example of Incorrect Display

console.log('unbind')从不在控制台中显示,所以我不确定这是否也是问题的一部分,我不太了解Aurelia如何理解它是否会。

在我提供的链接中,表达式已被重新命名,但我无法使其工作,并且无法真正理解它在那里尝试做什么。

1 个答案:

答案 0 :(得分:0)

这是我前一段时间制作的原型。从来没有实现编辑片。支持冻结列,分组并使用虚拟化处理大量数据。

https://gist.run/?id=9782317010240c90fc30e179eeb41064

https://gist.github.com/jdanyow/9782317010240c90fc30e179eeb41064