現在、Web アプリケーションに jQuery、Twitter Bootstrap、および CanJS を使用しています。CanJSでルーティングを実装しようとしています。Bootstrap のタブを使用しています。タブをクリックすると、#tabSearch、#tabUser、または #tabPermissions が表示されるはずでしたが、ハッシュが空の文字列で返されます。私は何を間違っていますか?
これを使用してタブを変更しています:
TabControl = can.Control.extend({}, {
init: function (element, options) {
element.find('a[href="' + options.defaultTab + '"]').tab('show');
this.userSearch = null;
this.userForm = null;
}
, 'a[data-toggle="tab"] show': function (e) {
this.options.tabChangeCallback(e);
}
});
UserTab = new TabControl('#tabctrlUser', {
defaultTab: '#tabSearch',
tabChangeCallback: function (e) {
if (e.context.hash == '#tabSearch') {
if (!this.userSearch) {
this.userSearch = new FormUserQuery('#tabSearch', {});
}
} else if (e.context.hash == '#tabUser') {
if (!this.userForm) {
this.userForm = new FormUser('#tabUser', {});
}
this.userForm.renderView(currentUser);
} else if (e.context.hash == '#tabPermissions') {
new FormPermissions('#tabPermissions', {});
}
}
});
HTML部分は次のとおりです。
<ul id="tabctrlUser" class="nav nav-tabs">
<li><a href="#tabSearch" data-toggle="tab">Pesquisar</a></li>
<li><a href="#tabUser" data-toggle="tab">Cadastrar/Alterar</a></li>
<li><a href="#tabPermissions" data-toggle="tab">Acessos</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane" id="tabSearch"></div>
<div class="tab-pane" id="tabUser"></div>
<div class="tab-pane" id="tabPermissions"></div>
</div>