2017-02-12 3 views
0

各ボタンクリックでli要素を動的に追加しようとしています。しかし、新しいli要素は作成されていません。私は同じことを達成するためにng-repeatを使用しようとしています。以下 は私のコードAngularjsは、ボタンクリック時にli要素を動的に追加します。

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> 

Queryボタン、初めて、タブのクリックで角度jsのコード上記のコードで

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++ ; 

} 
} 
}); 

、あります作成されます。 2回目のクリックで、新しいタブを作成する代わりに同じタブが変更されます。同じことを達成する方法を教えてください。クリックするたびに、新しいタブを作成します。

これに関するお手伝いがあります。

+0

「ng-repeat」は表示されませんあなたのhtml – svarog

答えて

1

ng-repeat="tabs in tabcount"tabcountは数字ですが、ngRepeatはリストやオブジェクトなどの反復可能な変数を反復処理する必要があります。 docs

ngRepeatディレクティブから

は、コレクションから項目ごとに一度テンプレートをインスタンス化します。各テンプレートインスタンスは独自のスコープを取得します。ここでは、指定されたループ変数は現在のコレクションアイテムに設定され、$ indexはアイテムインデックスまたはキーに設定されます。

は空の配列この

$scope.openQuerydiv = function(parameter) { 
    $scope.tabcount.push({ 
     type: parameter, 
     link: "some_link.html", 
     name: "some name" 
    }); 
} 

のようなonClickの機能プッシュオブジェクト内

$scope.tabcount = []; 

としてtabcountをインスタンス化し、ngRepeat

<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> 
を使用してHTMLにそのリストに反復するようにしてください
+0

上記のソリューションに感謝します。私はリンクの下にいくつかの動的HTMLコードを含めることにしました。上記では、some_link.htmlを指定しています。動的HTMLコードを挿入する方法を教えてください。私はvarを作成してインクルードして添付する必要がありますか?これについての助けは大いに評価されています。ありがとう – vr3w3c9

+0

角度のドキュメントはそれほど良いものではありませんが、あなたのベアリングを手伝ってくれるでしょう。また、ここには[シンプルな塊り](https://plnkr.co/edit/lv5wJ8pdk2H95O4XZyWB?p=preview )は、ngRepeatを示します – svarog

+0

おかげでの例のおかげで。私はいくつかの動的HTMLをリンクに含めようとしていて、HTMLコードから呼び出そうとしていましたが、動的HTMLコードを見ることができませんでした。それはどんなエラーも与えません。これについてのあなたの助けは非常に高く評価されます。 – vr3w3c9

関連する問題