我试图在每次点击按钮时动态添加li元素。但新的li元素没有被创建。我试图用ng-repeat来实现同样的效果。 以下是我的代码
html代码
<div data-ng-app="myApp" data-ng-controller="TestController" >
<div ng-show="showQuerydiv" id="qscompid" style="margin-left:170px;margin-top:90px">
<div class="btn-group" id="buttonOptions" style="width: 100%; position:absolute;">
<a href="#" class="btn btn-primary" ng-click="openQuerydiv('query')">Query</a>
<a href="#" class="btn btn-primary" ng-click="openQuerydiv('script')">Script</a>
<a href="#" class="btn btn-primary" ng-click="openQuerydiv('compare')">Comp</a>
<div style="float: right; width: 30%">
<a href="#operationDetailInfo" class="glyphicon glyphicon-info-sign" data-toggle="collapse" style="float: left;" title="Info"></a>
<div id="operationDetailInfo" class="collapse" style="width: 95%; float: left;">
</div>
</div>
<br>
<div id="sqlQueryDiv" ng-show="isShow" style="width: 100%;margin-top: 30px;margin-left: -170px;">
<ul class="nav nav-tabs" role="tablist" id="queryULId" style="width: 1140px;height: 39px;">
<li class="active" ng-repeat="tabs in tabcount">
<a href="#queryTab"+{{tabCount}} role="tab" data-toggle="tab">
{{tabName}}{{tabCount}}
</a>
<span class="close" style="font-size: 12px; position: absolute; margin-left: 85%; margin-top: -25%; cursor: pointer;">X</span>
</li>
</ul>
<div class="tab-content" style="width:1177px;height: 225px;">
</div>
</div>
</div>
</div>
Angular js code
var app = angular.module('myApp', []);
app.controller('TestController', function($scope){
console.log('Going for execution ');
$scope.tabCount = 0 ;
$scope.showQuerydiv = true;
$scope.isShow = false;
$scope.list =" " ;
$scope.openQuerydiv = function(parameter)
{
alert("inside the openqueryDiv") ;
if(parameter == 'query')
{
alert("inside the openquerydiv" + parameter);
$scope.isShow=true;
$scope.tabName='SQL Query';
$scope.tabCount++ ;
}
}
});
在上面的代码中,单击Query按钮,第一次创建选项卡。在第二次单击时,将修改相同的选项卡,而不是创建新选项卡。能告诉我如何实现这一目标吗?在每个按钮上单击,我想要创建一个新选项卡。
非常感谢任何帮助。
答案 0 :(得分:1)
您正在执行ng-repeat="tabs in tabcount"
而tabcount
是一个数字,ngRepeat需要迭代一个可迭代变量,例如列表或对象。
来自docs
ngRepeat指令从集合中为每个项目实例化一次模板。每个模板实例都有自己的范围,其中给定的循环变量设置为当前集合项,$ index设置为项索引或键。
尝试将tabcount
实例化为空数组
$scope.tabcount = [];
在onClick函数中推送像这样的对象
$scope.openQuerydiv = function(parameter) {
$scope.tabcount.push({
type: parameter,
link: "some_link.html",
name: "some name"
});
}
使用ngRepeat
在html中迭代该列表<li class="active" ng-repeat="tabs in tabcount">
<a href="{{tabs.link}}" role="tab" data-toggle="tab">
{{tabs.name}}
</a>
<span class="close" style="font-size: 12px; position: absolute; margin-left: 85%; margin-top: -25%; cursor: pointer;">X</span>
</li>