2017-11-17 20 views
0

다음은 jquery UI에서 jquery datepicker 및 i18n이 포함되어 있으며 사용자 정의 속성이 작성된 코드입니다. datepicker가 작동하고 달력을 표시하지만 로캘을 프랑스어로 변경하지 않습니다. jquery UI i18n 폴더의 로켈 파일을 포함해야하는 다른 방법이 있습니까?aurelia에서 JQuery UI datepicker를 사용하여 로케일을 변경하는 방법은 무엇입니까?

import $ from "jquery"; 
 
import {datepicker} from "components-jqueryui"; 
 
import {EventAggregator} from "aurelia-event-aggregator"; 
 
import {inject, customAttribute} from "aurelia-framework"; 
 
import {i18n} from "components-jqueryui"; 
 

 

 
@customAttribute("datepicker") 
 

 
@inject(Element, EventAggregator) 
 
export class DatePicker { 
 
    constructor(element, eventAggregator) { 
 
     this.element = element; 
 

 
     // Handle to Aurelia pub/sub events 
 
     this.eventAggregator = eventAggregator; 
 
    } 
 

 
    attached() { 
 
     $(this.element).datepicker($.datepicker.regional["fr"]); 
 
     // $.datepicker.setDefaults(
 
     //  $.extend($.datepicker.regional["fr"]) 
 
     //); 
 
     $(this.element).datepicker({dateFormat: "yy-mm-dd", onClose: function fct() { this.focus(); }}) 
 
      .on("change", e => fireEvent(e.target, "input")); 
 

 
     this.eventAggregator.subscribe("event:locale:changed", (locale) => { 
 
      $(this.element).datepicker($.datepicker.regional["fr"]); 
 
      // $.datepicker.setDefaults(
 
      //  $.extend($.datepicker.regional["fr"]) 
 
      //); 
 
     }); 
 
    } 
 

 
    detached() { 
 
     $(this.element).datepicker("destroy") 
 
      .off("change"); 
 
    } 
 
} 
 

 
function createEvent(name) { 
 
    let event = document.createEvent("Event"); 
 

 
    event.initEvent(name, true, true); 
 
    return event; 
 
} 
 

 
function fireEvent(element, name) { 
 
    let event = createEvent(name); 
 

 
    element.dispatchEvent(event); 
 
}

답변

0

수입 * FRCA로 "구성 요소 - jqueryui/UI/국제화/날짜 선택기 - FRCA"에서;

로케일을 다음과 같이 설정하십시오. $ (this.element) .datepicker ($. datepicker.regional [locale]);

+0

로케일은 _set_하지만 _changing_하지 않습니다. 즉, 구성 요소를 다시 작성합니다. – balazska

0

$.datepicker 로케일을 변경하는 다른 인터페이스를 가지고, 뭔가 같은 :

<script src="i18n/datepicker-fr.js"></script> 
: 또한

$(this.element).datepicker('options', 'new-locale'); 

, 당신은 해당 현지화 스크립트를 가져와야합니다

... 또는 s 동등한 ES6 임포트. import {i18n} from "components-jqueryui";이이 두 번째 부분을 수행 할 수도 있습니다.

여기

전체 예 : https://jqueryui.com/datepicker/#localization

+0

의견을 보내 주셔서 감사합니다. 로렐을로드하는 것을 허용하지 않는 Aurelia에 번역 파일 (datepicker-fr 등)을 포함시켜야하지만. –

+0

내가 작업중인 패키지에 익숙하지 않지만 i18n 가져 오기에 현지화가 포함되어있을 수 있습니다. 'import {i18n} from "components-jqueryui";' – balazska

+0

고마워요. 그 수입은 js 파일이 예상대로 작동하지 않습니다. 다음 중 하나가 작동합니다. :) '수입 * FRCA로 "구성 요소 - jqueryui/UI/국제화/날짜 선택기 - FRCA"에서, 또한 '$ (this.element) .datepicker ($로 로케일을 설정할 수있다' . datepicker.regional [locale]); ' –