创建双向值转换器

双向值转换器在你的 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>

值得注意的是,我们正在使用绑定行为来限制我们的值更新的速率,或者每次键入时它都会更新,而不是预期的行为。