在ngStrap的2.1.0版中,他们重写了Tabs指令。他们在选项卡上的文档现在没有使用选项卡中的模板的任何示例。我使用2.0.5在我的页面上使用Tabs但由于其他不起作用而不得不升级。我想确保在我在github上打开问题之前我没有遗漏某些内容。ngStrap's site仍然会将模板列为选项,即使他们删除了所有示例。
制作我的标签的代码是:
$scope.tabs = [
{
title: "Tab 1",
template: "tab1.html"
},
{
title: "Tab 2",
template: "tab2.html"
}];
我尝试了几种不同类型的标签显示。它们位于以下位置,可在此plnkr中进行测试:http://plnkr.co/edit/zEQ8mP6IkvCVPlYqxR59?p=preview
尝试1:
<div bs-tabs>
<div ng-repeat="tab in tabs" title="{{ tab.title }}" template="{{tab.template}}" bs-pane></div>
</div>
尝试2:
<div bs-tabs>
<div ng-repeat="tab in tabs" title="{{ tab.title }}" template="tab.template" bs-pane></div>
</div>
尝试3:
<div bs-tabs>
<div ng-repeat="tab in tabs" title="{{ tab.title }}" ng-bind="tab.template" bs-pane></div>
</div>
尝试4:
<div bs-tabs>
<div ng-repeat="tab in tabs" title="{{ tab.title }}" template="tab.template" bs-pane></div>
</div>
任何帮助表示赞赏!谢谢!
答案 0 :(得分:2)
我最终创建了一个解决方法。我发帖,所以我希望能帮助其他人。
我最终创建了一个名为myTabs的新指令,所以在index.html中我只是把
<my-tabs tabs="tabs"></my-tabs>
还有一个&#34;静态包含&#34;指令基本上是ng-include但不会创建新的范围。
希望这可以帮助有人继续前进!
这里是plnkr:http://plnkr.co/edit/MVbAN0uif9REjPjUusnr?p=preview
app.js有:
$scope.tabs = [
{
title: "Tab 1",
show: true, //this is so this tab shows by default
templateUrl: "tab1.html"
},
{
title: "Tab 2",
templateUrl: "tab2.html"
}];
myTabs.html - 这是标签的模板。
<ul class="myTabs">
<li ng-repeat="tab in tabs" ng-class="{active: tab.show}" ng-click="setActiveTab(tab.title)">{{tab.title}}</li>
</ul> <br/><br/>
<div ng-repeat="tab in tabs" ng-show="tab.show">
<div static-include="{{tab.templateUrl}}"></div>
</div>
myTabs.js
(function (ng) {
ng.module('plunker')
.directive('myTabs', [function() {
return {
restrict: 'AE',
scope: false,
templateUrl: 'myTabs.html',
link: function(scope, element, attrs) {
scope.tabs = scope.$eval(attrs.tabs);
scope.setActiveTab = function(title) {
for (var i = 0; i < scope.tabs.length; i++) {
scope.tabs[i].show = false; // hide all the other tabs
if (scope.tabs[i].title === title) {
scope.tabs[i].show = true; // show the new tab
}
}
}
}
};
}
])
.directive('staticInclude', function ($http, $templateCache, $compile) {
return function (scope, element, attrs) {
var templatePath = attrs.staticInclude;
$http.get(templatePath, { cache: $templateCache }).success(function (response) {
var contents = element.html(response).contents();
$compile(contents)(scope);
});
};
});
}(angular));
的style.css
.myTabs {
list-style: none;
position: relative;
text-align: left;
float: left;
border-bottom: 1px solid lightgrey;
width: 100%;
padding-left: 0; }
.myTabs li {
border-top-left-radius: 5px;
border-top-right-radius: 5px;
padding: 15px 8px 15px 50px;
font-weight: 0;
float: left;
display: block;
padding: 10px;
background-color: white;
border-bottom: 1px solid lightgrey;
margin: 0;
margin-bottom: -1px; }
.myTabs li:hover {
background-color: lightgrey;
cursor: pointer; }
.myTabs li.active {
display: block;
padding: 10px;
background-color: white;
border-bottom: 0px solid lightgrey;
border-top: 1px solid lightgrey;
border-left: 1px solid lightgrey;
border-right: 1px solid lightgrey; }
.dsTabs li.active:hover {
background-color: white;
cursor: pointer; }
答案 1 :(得分:0)
正确的解决方案是:
<div ng-repeat="tab in tabs" title="{{ tab.title }}" ng-include src="tab.template" bs-pane></div>
再见
答案 2 :(得分:0)
我解决了同样的问题:
<div bs-active-pane="tabs.activeTab" bs-tabs>
<div ng-repeat="tab in tabs" data-title="{{ tab.title }}" name="{{ tab.title }}" disabled="{{ tab.disabled }}" ng-include src="tab.template" bs-pane>
</div>
</div>
答案 3 :(得分:-4)
你可能想试试这个...... 删除src,而是将模板URL设置为ng-include,如下面的代码......