Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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中输入时创建重复的文本框?_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 在AngularJS中输入时创建重复的文本框?

Javascript 在AngularJS中输入时创建重复的文本框?,javascript,html,angularjs,Javascript,Html,Angularjs,我正在尝试制作一系列文本框。它以一个文本框开始,但当用户将信息放入其中时,另一个空文本框将显示在其下方。这种情况将无限期地继续下去 每个文本框都需要有一个与之关联的ng model值,并且每个文本框都需要由ng repeat生成 例如,我的HTML如下所示: <table ng-controller="BoxesController"> <tr ng-repeat="box in boxes"> <td><input type="text"

我正在尝试制作一系列文本框。它以一个文本框开始,但当用户将信息放入其中时,另一个空文本框将显示在其下方。这种情况将无限期地继续下去

每个文本框都需要有一个与之关联的
ng model
值,并且每个文本框都需要由
ng repeat
生成

例如,我的HTML如下所示:

<table ng-controller="BoxesController">
  <tr ng-repeat="box in boxes">
    <td><input type="text" ng-model="box.input"></td> <!--boxes[0].input-->
  </tr>
</table>
这将在视图中创建一个空框,其中
box.input==”
if
基本上是“如果数组中的最后一个值不是空的,则向数组中追加一个新的空值。”

最初,整个过程应该创建一个空框,然后在用户逐框输入数据时生成更多的框

然而,它实际上是生成两个完全不响应输入的空框

有人知道在这里该怎么做,怎么做吗


谢谢大家!

将条件包装到方法中:

$scope.newBox = function() {
   if($scope.boxes[$scope.boxes.length - 1].input !== ""){
    $scope.boxes.push({input: ""});
    console.log( $scope.boxes)
    $scope.$apply;
  }
};
Html:



将条件包装在一个方法中:

$scope.newBox = function() {
   if($scope.boxes[$scope.boxes.length - 1].input !== ""){
    $scope.boxes.push({input: ""});
    console.log( $scope.boxes)
    $scope.$apply;
  }
};
Html:



对于上面的答案,尝试使用一种方法。这里是使用ng change的另一个示例

angular.module('app',[])
.controller('BoxesController',['$scope',函数($scope){
$scope.box=[
{}
];
$scope.callChange=function(){
如果($scope.box[$scope.box.length-1].val!==“”){
$scope.box.push({val:});
}
};  
}]);

如上所述,尝试使用一种方法。这里是使用ng change的另一个示例

angular.module('app',[])
.controller('BoxesController',['$scope',函数($scope){
$scope.box=[
{}
];
$scope.callChange=function(){
如果($scope.box[$scope.box.length-1].val!==“”){
$scope.box.push({val:});
}
};  
}]);


您的意思可能是
如果($scope.box[$scope.box.length-1]。输入!==”)
@kkkk您找到了@Dev One现在
ng blur
处于未使用状态,因为问题在别处。@morels,怎么会这样?如果最后一个框有值,它将创建一个新框,否则它将不会创建新框。@morels,它不会。看到这一点:OP仍然需要
$watch
推送新框的
$scope.box
。您可能是指
如果($scope.box[$scope.box.length-1]。输入!==“”)
@kkkk您找到了它@Dev One现在
ng blur
处于未使用状态,因为问题在别处。@morels,怎么会这样?如果最后一个框有值,它将创建一个新框,否则它将不会创建新框。@morels,它不会。看到这个:OP仍然需要
$watch
这个
$scope.box
来推一个新的框。
<td><input type="text" ng-model="box.input" ng-blur="newBox()"></td>