2016-08-07 47 views
1

ich ein benutzerdefiniertes Attribut „Datepicker“, dieAurelia Webpack picker ist keine Funktion

klagt über
TypeError: $(...).datepicker is not a function 

I Skelett-Typoskript-webpack als mein Ausgangspunkt verwende.

datepicker.ts

import {inject, autoinject, customAttribute, DOM} from "aurelia-framework"; 
import moment from "moment"; 

import "jquery"; 
import "jquery-ui"; 

@customAttribute("datepicker") 
@inject(DOM.Element) 
export class JqueryUiDatePicker { 
    constructor(private element: Element) { 
    moment().format(); 
    } 

    attached() { 
     $(this.element) 
      .datepicker({dateFormat: "DD/MM/YYYY"}) 
      .on("change", e => this.fireEvent((e.target) as Element, "input")); 
    } 

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

    private fireEvent(element: Element, name: string): void { 
     const event = this.createEvent(name); 
     this.element.dispatchEvent(event); 
    } 

    private createEvent(name: string): Event { 
     const event = document.createEvent("Event"); 
     event.initEvent(name, true, true); 
     return event; 
    } 
} 

Markup

<input class="form-control" id="orderDate" datepicker placeholder="Order Date" type="text" value.bind="model.orderDate | dateFormat: 'DD/MM/YYYY'"> 

Es verwendet zu arbeiten, wenn Aurelia in der Betaphase, aber nachdem ich den meinen Code mit den neuesten Skelett- aktualisiert haben typescript-webpack, es funktioniert nicht mehr.

Antwort

0

Versuchen Sie import $ from 'jquery';.

Hier Blog für ein verwandtes Beispiel: http://davismj.me/blog/semantic-custom-element/

+0

ich habe noch einen ähnlichen Fehler „Unbehandelte Ablehnung Typeerror importieren: (0, _jquery2.default) (.. .). datepicker ist keine Funktion ". In der Beta webpack.config erinnere ich mich nicht, dass ich dort jqueryui hinzufügen musste, um es zum Laufen zu bringen. Für die Aurelia 1.0 webpack.config sehe ich einen Verweis auf config-global-jquery. Muss ich etwas ähnliches für jqueryui tun? – Retard

0

ich au cli bin mit (mit Typoskript) ... so YMMV; aber die folgenden Import arbeitete für mich

import * as $ from 'jquery' 

ja, Sie brauchen jquery-ui als auch