簡體   English   中英

如何在Aurelia的自定義屬性中使用i18n?

[英]How to use i18n in a custom attribute on Aurelia?

我在Aurelia中具有以下自定義屬性:

import { fireEvent } from '_utils/events'
import { autoinject, customAttribute, inject } from 'aurelia-framework'
import $ from 'jquery'
import { I18N } from 'aurelia-i18n'
import 'Modernizr'
import 'pickadate/lib/compressed/picker'
import 'pickadate/lib/compressed/picker.date'

@customAttribute('datepicker')
@inject(Element)
@autoinject
export class DatePicker {
  // public i18N: I18N
  private usePickADate: boolean

  constructor (private element: Element, private i18n: I18N) {
    this.i18n = i18n
    this.usePickADate = !Modernizr.inputtypes.date
    $(this.element).pickadate({
      weekdaysShort: ['Ss', 'Mm', 'Tt', 'Ww', 'Th', 'Ff', 'Ss'],
      showMonthsShort: true,
      format: i18n.tr('general.date-format')
    })
  }

  public attached () {
    if (this.usePickADate) {
      $(this.element).pickadate()
        .on('change', (e: any) => {
          fireEvent(e.target, 'input')
        })
    }
  }

  public detached () {
    if (this.usePickADate) {
      $(this.element).pickadate('picker')
        .off('change')
        .stop()
    }
  }
}

在這里,我無法使用i18n進行翻譯和本地化。 我收到此錯誤:

內部錯誤:消息:無法讀取未定義的屬性'tr'

問題是什么? 我該如何解決?

您可以在Aurelia中以兩種方式注入依賴項,或者使用@autoinject()或使用@inject()

  • @autoinject()自動查看任何構造函數參數,並自動注入您已導入的任何依賴項。

  • @inject()要求您特別提及要注入到類中的任何依賴項。

使用@autoinject()簡單情況是:

import { I18N } from "aurelia-i18n";
import { autoinject } from "aurelia-framework";

@autoinject()
export class DatePicker {

  constructor (private element: Element, private i18n: I18N) { }

}

如果您確實希望使用@inject()@autoinject()以任何理由可言,一定要注入所有的依賴關系,就像這樣:

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

@inject(Element, I18N)
export class DatePicker {

  constructor (private element: Element, private i18n: I18N) { }

}

您在問題中同時使用了兩者,這似乎使事情變得混亂。

我解決了,我刪除了@inject(Element)

import { autoinject, customAttribute } from 'aurelia-framework'
....
@customAttribute('datepicker')
@autoinject
export class DatePicker {
....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM