Javascript AngularJS:使用ng单击时获取兄弟姐妹
我正在处理一个列表,它在不同的ng中多次使用,在一个页面上重复迭代 第一个列表项由ng repeat生成,第二个最后一个列表项包含一个范围,单击该范围时,应显示页面加载中隐藏的最后一个列表项Javascript AngularJS:使用ng单击时获取兄弟姐妹,javascript,angularjs,dom,Javascript,Angularjs,Dom,我正在处理一个列表,它在不同的ng中多次使用,在一个页面上重复迭代 第一个列表项由ng repeat生成,第二个最后一个列表项包含一个范围,单击该范围时,应显示页面加载中隐藏的最后一个列表项 <ul ng-repeat="list in lists"> <li ng-repeat="item in getItems(a,b)">{{item}} </
<ul ng-repeat="list in lists">
<li ng-repeat="item in getItems(a,b)">{{item}}
</li>
<li>
<span style="cursor:pointer;" ng-click="display_item_form($event)" class="glyphicon glyphicon-plus"></span>
</li>
<li style="display: none;" class="item-form">
content to be shown on 'button' press
</li>
</ul>
除了传递$event之外,我还尝试传递'this',但结果总是未定义或异常
$scope.display_item_form = function($event){
// alert($(it).parent().siblings('.item-form').attr('type'));//passing this instead of $event: result: undefined
alert($($event.target).attr('type')); //undefined
// $(it).parent().parent().children('.item-form').show();
// $('.item-form').show(); // this works, but i only want .item-form inside the current <ul> to be shown
}
您可以完全在HTML中执行类似的操作 showItem最初未定义,因此不会显示。单击按钮后,切换该按钮,在本例中将其设置为true,并显示 var app=angular.moduleapp,[]; app.controllerTestCtrl,['$scope',函数$scope{ $scope.list=[{val:1},{val:2},{val:3},{val:4},{val:5}]; $scope.list2=[{val:1},{val:2},{val:3},{val:4},{val:5}]; }]; {{item.val}} + 最后一项 {{item.val}} + 最后一项
您可以尝试在加载和引用最后一个li的ng if语句时在$scope上创建一个变量 注意到: ng if从DOM中删除条件元素。 ng show应用显示:无;到DOM中的条件元素 如果需要重新初始化条件元素内的任何子组件,请务必记住这一点 希望这有帮助!:- {{item}} “按钮”按钮上显示的内容 我找到了一个解决方案: 角元素
$scope.display_item_form = function($evt){
var ele = angular.element($evt.target);
ele.parent().parent().find('.item-form').show();
}
似乎使用一个控制器变量来控制这一点,然后使用ng if=variable==true并从ng click设置变量将是一种方法。如果需要重新使用它,请将其移动到指令或组件。请尝试使用prop'type'而不是attr'type',因为没有类型属性集。是否为getItems添加函数?getItems只返回列表项数组,除了父项之外,与最后两个列表项没有任何关系,prop'type'仍然未定义,我现在将研究组件方向,因为我在这方面没有太多经验angular@tzimme我只是用它来建立正确的反应。在我下面的回答中,我刚刚创建了一个通用数组,您可以用实际的getItems函数替换它。虽然我喜欢它,但此解决方案的问题是列表多次出现,它会使页面上的所有“最后”项显示您可以为不同的列表使用不同的变量showItem。与showTest1Item类似,showTest2Item。它只是这一个列表,在需要时在多个嵌套列表中动态创建,并重复要显示的最后一个项目。。。它是原始循环的一部分吗?还是可能?您可以始终循环浏览除最后一个之外的所有内容的列表,然后单击“完成循环”。否,首先:显示循环中的项目。然后:当单击+其他但不显示相关信息以及一些无输入时,有一种方法可以动态地将$scope.showContent分配给当前ul。我想这也会影响页面上的所有列表“最后一个”项目。您不仅仅想显示最后一个静态li吗?