2017-12-18 182 views
1

我正在使用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路上是如何工作的,瞭解它是否會。

在我提供的鏈接中,表達式已重新綁定,但我無法使其工作,並且無法真正瞭解它正在嘗試執行的操作。

+0

你應該提供一個依據。還有一個問題:行爲文件名是否正確? – bigopon

+0

文件名正確無誤,行爲按照預期顯示的部分數據運行,我希望這是我正在編寫的代碼中的一個明顯錯誤,我會盡力在週末爲它做出決定 – Lewis

回答

0

這是我前一段時間創建的原型。從來沒有執行編輯片。支持凍結列,分組和使用虛擬化來處理大量數據。

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

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

+0

Cheers,I我會盡量在週末做這個工作,只是快速瀏覽一下,我看不到你在哪裏使用SetAttributeBindingBehavior SetAttributeBindingBehavior如何在沒有類似something.bind =「item&setAttribute」的情況下調用它? – Lewis