以编程方式设置angularjs中输入字段的值

时间:2016-10-19 19:02:04

标签: angularjs

我需要使用另一个输入字段的值预先填充输入字段。因此,一旦第一个字段失去焦点,第二个字段就会获得相同的值。该字段是可编辑的,但最初,它具有第一个字段的值。我发现第二个字段的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,那么设置值的角度方式是什么? 感谢

1 个答案:

答案 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);