【发布时间】:2015-11-11 16:43:27
【问题描述】:
我正在创建一个 Angular 选项卡指令,应用如下:
<div id="tabs-with-directive" data-tabs>
<ul class="tabs">
<li><a href="#" data-tabs-link="1">One</a></li>
<li><a href="#" data-tabs-link="2">Two</a></li>
</ul>
<div class="panes">
<div data-tabs-pane="1" class="pane active">One</div>
<div data-tabs-pane="2" class="pane">Two</div>
</div>
</div>
所以点击一个会显示窗格一,点击二会显示第二个窗格,...
我创建了一个有效的Plunker example without using a directive
我有一个Plunker example using the directive I am trying to build:
angular.module("app", [tabs]);
(function(angular) {
'use strict';
angular.module('tabs', []);
angular.module('tabs')
.directive('tabs', tabsDirective);
function tabsDirective() {
return {
scope: true,
restrict: 'A',
controller: tabsController
};
}
function tabsController($scope) {
$scope.tabs = [];
this.addTab = function (tab) {
$scope.tabs.push(tab);
};
this.isTabActive = function (link) {
for(var i = 0; i < $scope.tabs.length; i++) {
if ($scope.tabs[i].link == link)
return $scope.tabs[i].active;
}
return false;
};
this.setTabToActive = function (link) {
for(var i = 0; i < $scope.tabs.length; i++)
$scope.tabs[i].active = $scope.tabs[i].link == link;
};
}
tabsController.$inject = ['$scope'];
angular.module('tabs')
.directive('tabsLink', tabsLinkDirective);
function tabsLinkDirective() {
return {
scope: false,
restrict: 'A',
require: '^tabs',
link: function (scope, element, attributes, controller) {
var tab = { link: attributes.link, active: "false" };
controller.addTab(tab);
element.bind('click', function () {
controller.setTabToActive(attributes.link);
});
scope.$watch('tabs', function () {
element.toggleClass('active', controller.isTabActive(attributes.link));
});
}
};
}
angular.module('tabs')
.directive('tabsPane', tabsPaneDirective);
function tabsPaneDirective() {
return {
scope: false,
restrict: 'A',
require: '^tabs',
link: function (scope, element, attributes, controller) {
scope.$watch('tabs', function () {
element.toggleClass('active', controller.isTabActive(attributes.pane));
});
}
};
}
})(angular);
不幸的是,这不起作用,我找不到我做错了什么。
有人可以帮帮我吗?
【问题讨论】:
-
这对你有用吗?
标签: angularjs