Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:使用ng单击时获取兄弟姐妹_Javascript_Angularjs_Dom - Fatal编程技术网

Javascript AngularJS:使用ng单击时获取兄弟姐妹

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}} </

我正在处理一个列表,它在不同的ng中多次使用,在一个页面上重复迭代

第一个列表项由ng repeat生成,第二个最后一个列表项包含一个范围,单击该范围时,应显示页面加载中隐藏的最后一个列表项

                  <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吗?