建立雙向值轉換器

雙向值轉換器在你的 Value Converter 類中使用兩種方法:toViewfromView 這些方法被恰當地命名以表示資料流向哪個方向。

在我們的示例中,我們將建立一個前置值轉換器,它將確保在我們的應用程式中輸入的金額在其前面有一個 $

prepend.js

export class PrependValueConverter {
  
    /**
     * This is the value being sent back to the view
     *
     */
    toView(value) {
        return `$${value}`;
    }

    /**
     * Validate the user entered value
     * and round it to two decimal places
     *
     */
    fromView(value) {
        return parseFloat(value.toString().replace('$', '')).toFixed(2);
    }
}

使用它:

export class MyViewModel {
    amount = '';
}
<template>
    <require from="./prepend"></require>

    <h1>Current amount: ${amount}</h1>

    <label>Enter amount:</label>
    <input type="text" id="amount" value.bind="amount | prepend & debounce:500">
</template>

值得注意的是,我們正在使用繫結行為來限制我們的值更新的速率,或者每次鍵入時它都會更新,而不是預期的行為。