• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Aurelia自定义绑定错误

typescript 来源:Lewis 6次浏览

我正在使用Aurelia和Typescript,并且有一个自定义元素在传递数据后生成一个表,我想根据我传入的数组生成表的字段然后使用一个值转换器来改变一些显示, 我想创建一个自定义绑定,所以绑定是从传入的数组中动态生成的,并且一直遵循本指南:https://blog.ashleygrant.com/2017/07/09/getting-my-hands-dirty-with-aurelias-binding-engine/虽然我无法让它工作就像他一样,必须改变一些位。Aurelia自定义绑定错误

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; 
    } 
}  

当我运行这个数据会显示[目标对象]的东西面前的桌子细胞的很多踢进来,它开始显示,因为我期望它。每当我导航到新页面或刷新时,它将会是完全相同的行和列,它将开始正确显示,因此我想这与aurelia生命周期有关。 Example of Incorrect Display

的执行console.log(“解除绑定”)永远不会显示在控制台,所以我不知道如果这也是问题的一部分,我不知道有足够的了解Aurelia路上是如何工作的,了解它是否会。

在我提供的链接中,表达式已重新绑定,但我无法使其工作,并且无法真正了解它正在尝试执行的操作。


===========解决方案如下:

这是我前一段时间创建的原型。从来没有执行编辑片。支持冻结列,分组和使用虚拟化来处理大量数据。

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

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


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)