我正在開發一個使用AngularJS的小解決方案(我剛剛接觸它),並試圖使用<dl> <dt> <dd>
標籤創建手風琴效果。我已經定義了一個ng-repeat
以從.json文件創建dl內的dt和dd,並且它工作正常。ng-repeat的Angular JS指令無法循環通過子元素
當我想通過指令添加一些功能時,出現問題,因此我可以通過單擊<dt>
元素來顯示/隱藏<dd>
元素。我的指令代碼似乎沒有工作,因爲它並沒有真正做我期望的 - 它沒有做任何事情。 也許該指令試圖在ng-repeat
完成它的過程之前添加功能?但爲此我添加了$超時變量。
整體解決方案:http://codepen.io/valecarlos/pen/PNdpeZ
指令代碼:
app.directive('accordion', function($timeout){
return{
restrict: 'E',
transclude: true,
replace: true,
scope: {},
template: '<dl ng-transclude></dl>',
link: function(scope,element){
$timeout(function() {
console.log(element)
console.log(element.children().length);//this gives me 0
console.log("im here" + element)
element.children().find('dd').css('display','none');
element.find('dt').on('click', function(event){
element.children().find("dd").css('display', 'none')
var ddToOpen = angular.element(event.target).next();
ddToOpen.css('display','block');
});
});
}
};
});
HTML:
<accordion>
<dt ng-repeat-start="article in articles">
//my content
</dt>
<dd ng-repeat-end="">
//my content
</dd>
<accordion>
注:我試圖同時使用jQuery和AngularJS但沒有實現這個手風琴當我點擊時會發生3210元素
謝謝noppa!我現在明白我失敗的地方,我一直在努力實現你的建議,但我一直無法得到它的工作,並檢查你的codepen,它加載時是否隱藏'dd'?它似乎不適合我。乾杯! – randomguy04
你是對的,與選擇器有一個單獨的問題。我更新了答案和筆,現在它應該可以工作。 – noppa