首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aurelia自定义绑定错误

Aurelia自定义绑定错误
EN

Stack Overflow用户
提问于 2017-12-18 18:20:42
回答 0查看 190关注 0票数 1

我正在使用Aurelia和Typescript,并有一个自定义元素,它在传递数据后生成表,我希望显示的表的字段也是基于我传递的数组生成的,然后使用值转换器来更改一些字段的显示方式,我正在尝试创建自定义绑定,以便从传入的数组动态生成绑定,并遵循以下指南:https://blog.ashleygrant.com/2017/07/09/getting-my-hands-dirty-with-aurelias-binding-engine/尽管我不能让它完全像他那样工作,并且必须更改一些位。

我调用自定义绑定的HTML

代码语言:javascript
复制
<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>

和自定义绑定类

代码语言:javascript
复制
@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是如何工作的,无法理解它是否会。

在我提供的链接中,表达式被重新定位,但我不能让它工作,也不能真正理解它试图在那里做什么。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47866324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档