Ich versuche, einen jqueryui datepicker zu verwenden, und ich habe es fast funktioniert. Ich habe eine benutzerdefinierte Komponente, die so etwas wie dieses (einige Code online bekam) siehtAurelia Binding Change.delegate Nicht feuernd (JQueryUI Datepicker)
@inject(Element)
export class Checkbox {
@bindable({ defaultBindingMode: bindingMode.twoWay }) value = {};
@bindable datepicker;
@bindable label;
@bindable inputLabel;
element: Element = null;
constructor(element) {
this.element = element;
}
attached() {
$(".datepicker").datepicker();
$(".datepicker").datepicker()
.on("change", e => this.fireEvent(e.target, "input"));
}
createEvent(name) {
var event = document.createEvent("Event");
event.initEvent(name, true, true);
return event;
}
fireEvent(element, name) {
var event = this.createEvent(name);
element.dispatchEvent(event);
}
}
Hier ist der Ansicht-Vorlage:
<template>
<div class="checkbox">
<label><input type="checkbox" checked.bind="value.checked & twoWay">${label}</label>
</div>
<div show.bind="datepicker == 'true' && value.checked">
<label class="col-xs-1" style="padding: 0;">from</label>
<div class="col-xs-11">
<input class="form-control datepicker" type="text" value.bind="value.date & twoWay"/>
</div>
</div>
</template>
ich es wie folgt mit:
<checkbox datepicker="true" label.bind="'Checkbox label'" value.bind="filters['MyObject']" change.delegate="AlertSomething()"></checkbox>
Das Problem ist, wenn ich ein Datum mit dem Datumsauswahl auswählen. Das Änderungsereignis wird nicht ausgelöst. Wenn ich etwas manuell eintippe, wird es ausgelöst. Es wird auch ausgelöst, wenn das Kontrollkästchen geändert wird. Was fehlt mir hier?
arbeitete wie ein Charme. Danke, Mann! – James
tatsächlich bin ich auf ein Problem gestoßen. Wie übermittle ich den Ref-Wert an das benutzerdefinierte Element? Ich habe ungefähr 10 Datepicker (benutzerdefinierte Elemente), die ich im selben Elternteil verwende. Wie gebe ich eine eindeutige ref id ein? – James