我正在开发一个使用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