我需要使用另一个输入字段的值预先填充输入字段。因此,一旦第一个字段失去焦点,第二个字段就会获得相同的值。该字段是可编辑的,但最初,它具有第一个字段的值。我发现第二个字段的ngModel没有更新。
我这样做是为了设置第二个字段的值:
$("#" + fieldId).val(newstring);
这是第一个字段的HTML:
<td class="formLabel" vAlign="top" align="left">
<input validate-date-time val-type="date" val-start="true" val-end-id="endDate" id="startdate" size="10" max="10" width="20" ng-model="newEvent.startDate">
mm/dd/yyyy
</td>
以下是第二个字段的HTML:
<td class="formLabel" vAlign="top" align="left">
<input size="10" validate-date-time val-type="date" id="endDate" max="10" width="20" ng-model="newEvent.endDate">
mm/dd/yyyy
</td>
顺便说一下,这是在一个指令中完成的。有关如何使这项工作的任何指示? 我已经尝试调用scope。$ apply和scope。$ digest将输入值设置为无效。如果我不应该使用jQuery,那么设置值的角度方式是什么? 感谢
答案 0 :(得分:1)
尝试这样的事情:
// in the controller, add
$scope.isStartDateInitialized = false;
$scope.onStartDateSet = function() {
if (!$scope.isStartDateInitialized) {
$scope.isStartDateInitialized = true;
$scope.newEvent.endDate = $scope.newEvent.startDate;
}
};
<!-- add the following attribute to the start date input -->
<input ... ng-blur="onStartDateSet()" />
注意1:上面的代码假定您只想在设置开始日期时以编程方式更新结束日期。如果您希望始终将其设置为开始日期更改时的开始日期,则可以使用ng-change
代替ng-blur
。
注意2:您应该删除您提到的以下JQuery代码:
$("#" + fieldId).val(newstring);