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: ''
}
}