我已經看過一些使用AngularJS的選項卡示例,但很少有關於使用AngularJS的JQueryUI選項卡,所以我嘗試創建兩個指令來創建選項卡容器和選項卡項目。AngularJS和JQuery UI選項卡
這裏是我創建的樣例代碼:http://jsfiddle.net/davidzapata/tvq6w1g9/2/
HTML
<div ng-app="biApp">
<div ng-controller="MyCtrl">
<h1>{{greeting}}</h1>
<jqueryuitabs>
<jqueryuitab id="tab1" title="Tab 1">Tab 1 content</jqueryuitab>
<jqueryuitab id="tab2" title="Tab 2">Tab 2 content</jqueryuitab>
<jqueryuitab id="tab3" title="Tab 3">Tab 3 content</jqueryuitab>
</jqueryuitabs>
</div>
</div>
JS
var appModule = angular.module('biApp', []);
appModule.controller('MyCtrl', function($scope){
$scope.greeting = 'Hi!';
});
appModule.directive('jqueryuitabs', function() {
return {
restrict: 'E',
transclude: true,
template: '<div><ul><li ng-repeat="tab in tabs"><a href="#{{tab.id}}">{{tab.title}}</a></li></ul><ng-transclude></ng-transclude></div>',
controller: function($scope) {
console.log('jqueryuitabs Controller');
$scope.tabs = [];
this.addTab = function(tab){
console.log('Add Tab', tab);
$scope.tabs.push(tab);
}
},
link: function(scope, elm, attrs) {
console.log('jqueryuitabs link');
var jqueryElm = $(elm[0]);
$(jqueryElm).tabs();
}
};
});
appModule.directive('jqueryuitab', function() {
return {
restrict: 'E',
require: '^jqueryuitabs',
transclude: true,
scope: {
id: "@",
title: "@"
},
template: '<div id="{{id}}" ng-transclude></div>',
link: function (scope, element, attrs, tabsCtrl) {
console.log('Tab link');
tabsCtrl.addTab(scope);
}
};
});
我從來沒有在jsfiddle.net創建代碼之前,但該代碼似乎加載了所需的庫。即使如此,控制器仍然工作,呈現「問候」模型,但標籤不起作用,甚至不會將內容轉化爲各個元素。
當然,我是一個新的使用AngularJS,但我還沒有想出如何解決這個問題。
謝謝你!
我認爲你會更好地檢查角ui:http://angular-ui.github.io/bootstrap/#/tabs – OneHoopyFrood 2014-10-27 23:32:50