2017-10-19 18 views
0

我是Angularjs初學者,我試圖製作一個數據驅動的手風琴。我不希望使用angular-ui。我跟着教程崩潰Bootstrap 3,我想出了這個代碼,但我堅持試圖使其數據驅動。AngularJS:將引導程序摺疊div鏈接到app.js中的字段

HTML:

<div class="my-page__my-list-acc" ng- 
    if="field.fieldAccordions"> 
      <div id="accordion_{{ $index }}"> 
    <div class="panel my-panel-overrides"> 
    <a class="my-panel-heading" data-toggle="collapse" data-parent="#accordion_{{ $index }}" data-target="#collapse1"> 
     {{field.fieldAccordionHeader }} </a> 
    <div id="collapse1" class="collapse in"> 
     {{ field.fieldAccordionItem }} 
    </div> 
    </div> 
</div> 
</div> 

JS:

fieldAccordions: [{ 
      fieldAccordionHeader: 'text', 
        fieldAccordionItem: 'text', 
        }], 
        },{ 

fieldAccordions: [{ 
      fieldAccordionHeader: 'text', 

        fieldAccordionItem: 'text',   
        }], 
        },{ 

我有鏈接的HTML手風琴的不同部分的麻煩。該程序找到fieldAccordions並創建面板,但它不會進入fieldAccordionHeader和fieldAccordionItem部分。

另外,我遇​​到的第二個問題是,如果我創建不同的fieldAccordions項目,單擊每個項目只會關閉/打開原始fieldAccordions字段。

一些幫助,將不勝感激。我知道這可能是直接的,但它會幫助我更好地理解它。一個普朗克將是理想的!

+0

你的JS沒有任何意義。這是一個很差/部分形成的重複對象數組。請清理你自己的問題。 – jbrown

回答

0

從我對你的問題的理解中,你試圖從一組代表一個手風琴的物體中呈現手風琴。如果是這樣的話,我就會把裏面的手風琴和NG-重複,像這樣:

var app = angular.module('accordions', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
$scope.fieldAccordions = [{ 
 
    fieldAccordionHeader: 'Header 1', 
 
    fieldAccordionItems: [{ 
 
    desc: 'Item 1 - A' 
 
    }, { 
 
    desc: 'Item 1 - B' 
 
    }] 
 
}, { 
 
    fieldAccordionHeader: 'Header 2', 
 
    fieldAccordionItems: [{ 
 
    desc: 'Item 2' 
 
    }] 
 
}, { 
 
    fieldAccordionHeader: 'Header 3', 
 
    fieldAccordionItems: [{ 
 
    desc: 'Item 3' 
 
    }] 
 
}]; 
 
});
<!DOCTYPE html> 
 
<html ng-app="accordions"> 
 

 
<head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Accordions</title> 
 
    <link data-require="[email protected]" data-semver="3.3.7" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css" /> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
 
    <script> 
 
    document.write('<base href="' + document.location + '" />'); 
 
    </script> 
 
    <script data-require="[email protected]" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js" data-semver="1.5.11"></script> 
 
    <script data-require="[email protected]" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
 
</head> 
 

 
<body ng-controller="MainCtrl"> 
 
    <div class="panel-group" id="accordion"> 
 
    <div class="panel panel-default" ng-repeat="field in fieldAccordions track by $index"> 
 
     <div class="panel-heading"> 
 
     <div class="panel-title"> 
 
      <a data-toggle="collapse" data-parent="#accordion" href="#collapse{{ $index }}"> 
 
      {{ field.fieldAccordionHeader }} </a> 
 
     </div> 
 
     </div> 
 
     <div id="collapse{{ $index }}" class="panel-collapse collapse in"> 
 
     <div class="panel-body"> 
 
      <div ng-repeat="item in field.fieldAccordionItems track by $index">{{ item.desc }}</div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</body> 
 

 
</html>

注:我使用的標準引導3班,因爲你沒有提供你問題中的自定義樣式。

+0

我真的很感激。感謝您的幫助。還有一個問題:如何在每個頭文件中列出多個項目?現在它只能用於一個 –

+0

@ClaudiuRemy - 我不明白你的意思。請更新您的fieldAccordions數組,以準確反映您的實際情況,然後我將能夠回答您。 – jbrown

+0

在fieldAccordionItem1之後添加fieldAccordionItem2不會在fieldAccordionHeader下創建一個新字段 –

相關問題