是的,有可能!
我已经为你制作了一个 jQueryUI Tabs 示例:
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>
如您所见,我只复制了 jQueryUI 选项卡组件的样板 HTML,并创建了可绑定属性 tabs,它是一个像这样的对象数组:[{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();
}
}
代码可读性很强:我从我的 config.js 文件中导入了 jquery,我的 jquery-ui 也从那里导入(只有组件选项卡,所以它变得更轻了)。然后,我将 DOMElement 注入到我的类中,所以我可以获得它的 id。我已经创建了我的可绑定属性tabs。在我的构造函数中,我得到了 DOMElement id 并填充了我的 id 属性。最后,在附加事件上(当所有绑定完成时),我从我的 id 中获取了 jQuery 对象,并调用了方法 tabs() 将模板转换为 Tabs 组件。很简单吧?
在我的 config.js 文件中,我添加了这两行:
"jquery": "github:components/jquery@2.1.4",
"jquery-ui": "github:components/jqueryui@1.11.4",
然后你可以在任何你想要的地方使用 Tabs 组件,方法是在你项目的任何其他 HTML 模板中调用它:
就是这样!
您可以在此处查看工作示例:http://plnkr.co/edit/ESxZA2jTlN7f6aiq1ixG?p=preview
PS:谢谢你的 plnkr,Sylvian,我用你的 fork 我的。