Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 to controller从动态创建的文本字段获取日期?_Javascript_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

Javascript 通过ng repeat to controller从动态创建的文本字段获取日期?

Javascript 通过ng repeat to controller从动态创建的文本字段获取日期?,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我正在使用ngRepeat动态创建管理项,以管理web表单中的项,但我对$scope有一个小问题。newValueItem未定义可能是因为我动态创建它,我想问一下如何从动态创建的输入文本中获取值 HTML <form role="form" name="itemsManagementRrnForm"> <div class="panel panel-default"> <div class="panel-body">

我正在使用
ngRepeat
动态创建管理项,以管理web表单中的项,但我对
$scope有一个小问题。newValueItem
未定义可能是因为我动态创建它,我想问一下如何从动态创建的输入文本中获取值

HTML

<form role="form" name="itemsManagementRrnForm">
    <div class="panel panel-default">
        <div class="panel-body">
            <div class="row">
                <div class="col-md-6" data-ng-repeat="(formControllerKey,formControllerValue) in displayModel track by $index">
                    <div class="panel panel-default">
                        <div class="panel-heading">{{formControllerKey}}</div>
                        <div class="panel-body">
                            <div style="overflow-y: scroll; height:400px;">
                                <ul>
                                    <li data-ng-repeat="formControllerValue in formControllerValue track by $index" data-ng-hide="formControllerValue.deleted">
                                        <div id="showItem" data-ng-show="!displayModel[formControllerKey][$index].editingMode">
                                            <input class="" type="submit" value="Edit" data-ng-click="toggleEdit(formControllerKey,$index)">
                                            <input class="" type="submit" value="Delete" data-ng-click="deleteValue(formControllerKey,$index)">
                                            <label>{{formControllerValue.formControllerValueName}}</label>
                                        </div>
                                        <div id="editItem" data-ng-show="displayModel[formControllerKey][$index].editingMode">
                                            <input class="" type="submit" value="update" data-ng-click="updateValue(formControllerKey,$index)">
                                            <input class="" type="submit" value="Cancel" data-ng-click="cancel(formControllerKey,$index)">
                                            <input type="text" size="30" data-ng-model="formControllerValue.formControllerValueName" placeholder="add new here">
                                        </div>
                                    </li>
                                </ul>
                            </div>
                            <div>
                                <input class="" type="submit" value="add" data-ng-click="addValue(formControllerKey,formControllerValue[$index].formControllerID,$index)">
                                <input type="text" size="30" data-ng-model="newValueItem" placeholder="add new here">
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>

您遇到了范围界定问题

控制器有自己的作用域,其中只有一个
$scope.newValueItem

但是,
ng repeat
为每次迭代创建一个新范围,控制器的
$scope.newValueItem
独立于ng repeat中的每个范围

因此,您可以选择将
newValueItem
传递到add方法中,或者在每个显示模型中展开它以获得输入值。这将允许您在单击“添加”时单独清除每个项目,并停止对每个子范围的角度复制
newValueItem

$scope.displayModel = {
   controllerKey1: {
      data: [],
      newValueItem: ''
   }
}
我创建了一个快速小提琴作为示例:

编辑:创建一个示例小提琴,演示范围。

$scope.displayModel = {
   controllerKey1: {
      data: [],
      newValueItem: ''
   }
}