Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 使用ng repeat添加/删除DOM元素<;输入>;_Javascript_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

Javascript 使用ng repeat添加/删除DOM元素<;输入>;

Javascript 使用ng repeat添加/删除DOM元素<;输入>;,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我在Angularjs中有一个问题,我尝试使用ng repeat为用户添加/删除DOM元素输入和按钮,以便他们可以使用按钮添加或删除输入元素 事实上,我的代码没有这个词 这是html代码: <a class="btn pull-right" ng-click="addInputRow()">add input</a> <p class="" ng-repeat="item in controlNumberOfInputRows"> <span&

我在Angularjs中有一个问题,我尝试使用ng repeat为用户添加/删除DOM元素输入和按钮,以便他们可以使用按钮添加或删除输入元素

事实上,我的代码没有这个词

这是html代码:

<a class="btn pull-right" ng-click="addInputRow()">add input</a>    
<p class="" ng-repeat="item in controlNumberOfInputRows">
 <span>NO.{{$index+1}}</span>
 name:<input name="name" type="text" class="span2" /> 
 phone:<input name="phone" type="text" class="span2" /> 
 ID:<input name="ID" type="text" class="span3" />
 <a class="class" ng-click="deleteThis($index)">X</a>
</p>
但是当用户删除项目时,此代码有一个bug,仅限于Angulayjs 删除最后一个

如果我设置:

$scope.controlNumberOfInputRows = [0,1,2,3,4];
$scope.controlNumberOfInputRows = [0,1,2,3,4];
它在[0]~[4]中工作得很好,用户可以通过索引删除项目 ,但不在[5]~[X](删除最后一个)

为什么?

附言 如果我设置:

$scope.controlNumberOfInputRows = [0,1,2,3,4];
它在[0]~[4]中工作得很好,用户可以通过索引删除项目

name[Wells] Phone[123] ID[1] X
name[Wells] Phone[123] ID[2] X
name[Wells] Phone[123] ID[3] X   << delete this
name[Wells] Phone[123] ID[4] X
name[Wells] Phone[123] ID[5] X  
如果我们使用addinput

name[Wells] Phone[123] ID[1] X
name[Wells] Phone[123] ID[2] X
name[Wells] Phone[123] ID[3] X   
name[Wells] Phone[123] ID[4] X
name[Wells] Phone[123] ID[5] X
name[Wells] Phone[123] ID[6] X
name[Wells] Phone[123] ID[7] X
name[Wells] Phone[123] ID[8] X  << delete this
name[Wells] Phone[123] ID[9] X  

我想我通过杂技解决了我的问题:

    var index = 0;
    $scope.controlNumberOfInputRows = [];
    $scope.addInputRow = function(){
       index ++;
       $scope.controlNumberOfInputRows.push(index);      
    }

这确实很有效,但为什么呢?我不知道

尝试以下操作:将执行删除操作:

<a class="btn pull-right" ng-click="addInputRow()">add input</a>    
<p class="" ng-repeat="(key,value) in controlNumberOfInputRows">
 <span>NO.{{value+1}}</span>
 name:<input name="name" type="text" class="span2" /> 
 phone:<input name="phone" type="text" class="span2" /> 
 ID:<input name="ID" type="text" class="span3" />
 <a class="class" ng-click="deleteThis($index)">X</a>
</p>

我想我用杂技解决了我的问题

    $scope.addInputRow = function(){
       index ++;
       $scope.controlNumberOfInputRows.push(index);      
    }

这个词很好,但为什么呢?我不知道…

我的朋友,你的意思是在这些输入元素中键入一些不同的数据并使用[X]吗?它只是删除了最后一个。您是否使用了“添加输入”?您能否帮助我们重新创建问题/提供使用上面的演示重新创建问题的步骤确定我的朋友,很抱歉没有清除我的朋友,使用(键、值)可以删除,但只有最后一个像我一样,并且此案例不需要代码$compile,ng repeat将执行此操作
<a class="btn pull-right" ng-click="addInputRow()">add input</a>    
<p class="" ng-repeat="(key,value) in controlNumberOfInputRows">
 <span>NO.{{value+1}}</span>
 name:<input name="name" type="text" class="span2" /> 
 phone:<input name="phone" type="text" class="span2" /> 
 ID:<input name="ID" type="text" class="span3" />
 <a class="class" ng-click="deleteThis($index)">X</a>
</p>
    $scope.addInputRow = function(){
       index ++;
       $scope.controlNumberOfInputRows.push(index);      
    }