【问题标题】:Using Numeral.js from HTML in Aurelia在 Aurelia 中使用 HTML 中的 Numeral.js
【发布时间】:2019-05-08 11:38:00
【问题描述】:

我有以下可用的 Aurelia 代码:

total = 9000;
<div class="row pt-2">
  <div class="col-10 text-right">Amount is</div>
  <div class="col-2 text-right">${total}</div>
</div>

我想要做的是使用 HTML 中的Numeral.js 库来格式化从 9000 到 9000.00 的总变量。这是我尝试过的:

total = 9000;
<div class="row pt-2">
  <div class="col-10 text-right">Amount is</div>
  <div class="col-2 text-right">${numeral(${total}).format('0.00')}</div>
</div>

以及以下内容:

total = 9000;
<div class="row pt-2">
  <div class="col-10 text-right">Amount is</div>
  <div class="col-2 text-right">numeral(${total}).format('0.00')</div>
</div>

但不幸的是,没有一个有效。我尝试在 TypeScript 中使用 Numeral 库,它工作正常。我需要这个在 HTML 上。 我反应灵敏,请随时提出任何问题。

【问题讨论】:

    标签: html aurelia numeral.js


    【解决方案1】:

    使用值转换器来包装对数字的调用。

    这就是您的价值转换器的样子。不过,您必须将正确的导入语句添加到文件中。

    import numeral from 'numeral';
    
    export class CurrencyFormatValueConverter {
      toView(value, format = '0.00') {
        return numeral(value).format(format);
      }
    }
    

    然后您需要使用 require 元素将值转换器加载到您的视图中。

    <require from="./path/to/file'></require>
    

    然后你就可以在你的视图中使用它了。

    <div class="row pt-2">
      <div class="col-10 text-right">Amount is</div>
      <div class="col-2 text-right">${total | numeral }</div>
    </div> 
    

    或者您可以传入自定义格式作为参数来覆盖默认值:

    <div class="row pt-2">
      <div class="col-10 text-right">Amount is</div>
      <div class="col-2 text-right">${total | numeral:'($0,0.00)' }</div>
    </div> 
    

    顺便说一句,您应该看一下我们的文档,因为它实际上包含了这个精确值转换器作为其示例之一:https://aurelia.io/docs/binding/value-converters#value-converters

    【讨论】:

    • 感谢您的回答!我还以为是单排。此时您是否建议只在 TypeScript 中进行转换,然后将其作为字符串传递给 HTML?
    • @sbattoh Ashley 的方法绝对是在任何实际应用程序中处理此问题的正确方法。您可能不想触及总计的值,而价值转换器是一种更好的方法,但我无法为您做出这个决定。或者,您可以将数字分配给您的视图模型this.numeral = numeral,以使您的原始标记正常工作。不过,这通常不是正确的方法。
    • @MatthewJamesDavis 非常感谢您的意见。我想有时最好的答案并不总是一个班轮。另外,为什么你认为 this.numeral = numeric 方法不是最好的?我对 Aurelia 还很陌生
    • 这不是惯用的 Aurelia。它也不能在您的应用程序的多个页面/视图中重复使用。使用值转换器为您提供了组件化的可重用性,以及“以 Aurelia 方式进行操作”的额外好处。最后,${numeral(${total}).format('0.00')} 不是有效的 Aurelia 语法。你必须使用${numeral(total).format('0.00')}。但是,不要那样做。
    • ^ 这个。我唯一会使用此策略的情况是,如果我在 GitHub 上为某个问题创建复制品。
    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多