我正在重新提出问题,因为我之前遗漏了重要信息。
我有一个日期模型,可根据以下内容更改输入值:AngularJS: How to set default value to ng-model="searchText"?。
<div class="modal-body">
<div style="display:inline-block; margin-bottom:20px;">
<h3 style="float:left;">Set All Dates: </h3>
<span style="padding-top:15px; padding-left:7px;" class="input-group date">
<input id="setAllEffectiveDates" type="text" data-ng-model="date" value="" class="form-control input-sm">
<span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
</span>
</div>
<table class="table table-bordered">
<tbody data-ng-repeat="(associatedContract,ndc) in ndcs">
<tr>
<td>
<div class="input-group date updateIt">
<input id="effectiveDate" type="text" data-ng-model="date" class="form-control input-sm">
<span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
以上按预期工作,当我选择日期时,所有输入都会更改为所选日期。
我的问题是我想在字段中添加默认值。此值是一个在此处迭代的变量:<tbody data-ng-repeat="(associatedContract,ndc) in ndcs">
。
<input id="effectiveDate" type="text" data-ng-model="date" ng-init="date=ndc.value" class="form-control input-sm">
添加ng-init="date=ndc.value"
确实会按预期添加来自控制器的默认值。但它删除了数据绑定。更改input id="setAllEffectiveDates"
时,该字段不再更新。
如何使用默认值但数据绑定是否有效?
编辑:
更新的功能我添加了ng-change:
<input id="setAllEffectiveDates" ng-change="updateEffectiveDates(date)" type="text" data-ng-model="date" value="" class="form-control input-sm">
然后做了一个功能:
$scope.updateEffectiveDates = function (date) {
angular.forEach($scope.ndcs, function (ndc) {
ndc.value = date;
});
console.log($scope.ndcs);
};
看起来它更新了模型而不是页面上的字段。
答案 0 :(得分:1)
我怀疑ng-init
正在为date
创建的每个新范围创建一个新的ng-repeat
变量,因此它不再受控制器的绑定。如果您只需要一个日期,请尝试将其设置为控制器中存在的对象:
控制器:
$scope.obj = {
date: null
};
查看:
<input ng-init="obj.date=ndc.value">
编辑:只需绑定到每个数组元素上已有的日期:
data-ng-model="ndc.date" ng-change="setOtherDates()"
最终答案:
<input id="setAllEffectiveDates" ng-change="updateEffectiveDates(date)" type="text" data-ng-model="date" value="" class="form-control input-sm">
然后:
<input id="effectiveDate" type="text" data-ng-model="ndc.value" class="form-control input-sm">
功能:
$scope.updateEffectiveDates = function (date) {
angular.forEach($scope.ndcs, function (ndc) {
ndc.value = date;
});
console.log($scope.ndcs);
};