Aurelia用于输入的双向值转换器

时间:2016-02-03 12:11:01

标签: typescript aurelia aurelia-binding

我正在尝试为数字输入编写一个值转换器。在fromView()中,它会删除无数字字符并返回已解析的值。在toView()中,它使用aurelia-i18n格式化值。此值转换器绑定到input type=text字段。

fromView()正常工作,如果以不同的顺序调用,toView()似乎也应该正常工作。

这是我的价值转换器:

import {inject} from "aurelia-framework"
import {I18N, NfValueConverter} from "aurelia-i18n";

export class NumericValueConverter {
    static inject = [I18N];
    constructor(private i18N: I18N) {}

    toView(value: any, elementId: any, config: any) {
        let retval = "";
        if (value) {
            const nf = this.i18N.nf(undefined, "de");
            retval = nf.format(value);
        }            
        return retval;
    }

    fromView(value: any, elementId: any, config: any) {
        let retval = "";
        if (value) {
            retval = Here_Goes_The_Logic_To_Strip_Non_NumericChar_And_Parse_ToNumber
        }
        return retval;
    }
}

用法:

    <input id="${someId}"
       if.bind="someCondition"
       type="text"
       class="form-control"
       value.bind="targetObj[objProp]| numeric:config"
       readonly.bind="isreadonlyview">

来自toView()的值永远不会反映在input字段中。有什么建议吗?

到目前为止我的观察

    toView()之前调用
  • fromView()。但是,我认为如果订单不同,它可以工作。
  • 但是,第一次更改input中的值会导致以下来电:toView()fromView()toView()。因此,这是第一次有效,但不适用于随后的时间,因为电话就是这样:toView()fromView()
  • 我还考虑过从值转换器中删除toView()并使用NfValueConverter,附带aurelia-i18n,但它也具有与此类似的效果。

0 个答案:

没有答案