Sì, è possibile!
Ho fatto un jQueryUI Tabs esempio per voi:
tabs.html
<template>
<ul>
<li repeat.for="tab of tabs">
<a href="${'#' + $parent.id + '-' + $index}">${tab.title}</a>
</li>
</ul>
<div repeat.for="tab of tabs" id="${$parent.id + '-' + $index}">
<p>${tab.text}</p>
</div>
</template>
Come potete vedere, ho copiato solo il codice HTML boilerplate delle schede jQueryUI componente, e ha creato la proprietà bindable tabs
che è una matrice di oggetti del tipo: [{title: "", text: ""}]
.
tabs.js
import {bindable, inject} from 'aurelia-framework';
import $ from 'jquery';
import {tabs} from 'jquery-ui';
@inject(Element)
export class Tab {
@bindable tabs = null;
constructor(el) {
this.id = el.id;
}
attached() {
$(`#${this.id}`).tabs();
}
}
Il codice è abbastanza leggibile: ho importato jquery dal mio file config.js, e la mia jquery-ui da lì (solo le schede dei componenti, in modo da diventa più leggero). Quindi, ho iniettato il DOMElement nella mia classe, quindi ho potuto ottenere il suo id. Ho creato la mia proprietà bindable tabs
. Nel mio costruttore, ottengo l'id DOMElement e popola la mia proprietà id. E, infine, sull'evento allegato (quando tutti i binding sono finiti), ho ottenuto l'oggetto jQuery dal mio id e ho chiamato il metodo tabs()
per trasformare il modello in un componente Tabs. Piuttosto semplice, eh?
Nel mio file config.js, ho aggiunto queste due righe:
"jquery": "github:components/[email protected]",
"jquery-ui": "github:components/[email protected]",
e quindi è possibile utilizzare il componente schede dove si vuole, chiamando in qualsiasi altro modello HTML del vostro progetto:
Questo è tutto!
si può vedere l'esempio di lavoro qui: http://plnkr.co/edit/ESxZA2jTlN7f6aiq1ixG?p=preview
PS: Grazie per questo plnkr, Sylvian, ho usato il vostro da forcella mia.
Si prega di attendere. Questa è una buona domanda e non sono riuscito a trovare una buona descrizione su come farlo. Nel frattempo, si prega di rivedere la segnalazione di bug qui: https://github.com/aurelia/framework/issues/138. Ha un ragionevole esempio di come qualcuno ha gestito questo con il plugin datepicker. –
Ho scritto un blog che potrebbe interessarti sull'integrazione di librerie di terze parti in Aurelia qui: http://davismj.me/blog/aurelia-drag-and-drop –
Ho scritto un blog sulla creazione di elementi personalizzati per il wrapping framework css qui: http://davismj.me/blog/semantic-custom-element/ –