【发布时间】:2020-09-20 18:59:19
【问题描述】:
在我们的应用程序中,我们存储了大量的十进制数据。根据 Oracle JET 文档,可以根据为单个输入文本控件提供的模式来格式化十进制数字。
但是有没有办法为应用程序中的所有控件设置默认十进制模式? 有没有人解决过类似的困境?
【问题讨论】:
标签: oracle-jet
在我们的应用程序中,我们存储了大量的十进制数据。根据 Oracle JET 文档,可以根据为单个输入文本控件提供的模式来格式化十进制数字。
但是有没有办法为应用程序中的所有控件设置默认十进制模式? 有没有人解决过类似的困境?
【问题讨论】:
标签: oracle-jet
我不相信这是可能的。 <oj-input-number> 的converter 属性的默认值according to the documentation 是new NumberConverter.IntlNumberConverter()。无法为所有组件实例覆盖此默认值。
但是,为了减少代码中 Converter 实例的数量,您可以做的一件事是在单独的 JavaScript 模块中创建 Converter 实例,将其导出,然后将绑定导入您的视图模型中希望从中引用它。
假设您使用默认结构和 Typescript,在 src/ts 下创建类似 myConverter.ts 的内容。内容将是一个导出的Converter 实例:
import { IntlNumberConverter } from "ojs/ojconverter-number";
export const myConverter = new IntlNumberConverter({
maximumFractionDigits: 2,
style: "decimal"
});
然后,在您的 viewModel 文件中,您将执行以下操作:
import { IntlNumberConverter } from "ojs/ojconverter-number";
import { ModuleViewModel } from "ojs/ojmodule-element";
import { myConverter } from "../myconverter";
class MyViewModel implements ModuleViewModel {
public converter: IntlNumberConverter;
constructor() {
this.converter = myConverter;
}
}
export = MyViewModel;
然后在您的 HTML 中,您可以将 converter 绑定到您输入的 converter 属性,如下所示:
<oj-input-number converter="[[converter]]"></oj-input-number>
这当然不是所有输入组件实例的默认值,你仍然需要在每种情况下手动绑定转换器实例,但至少你只需要在一个地方维护它,它只在内存中存在一次。
【讨论】: