【问题标题】:Programmatically set the value of an input field in angularjs以编程方式设置angularjs中输入字段的值
【发布时间】:2017-03-01 13:47:06
【问题描述】:

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

顺便说一句,这是在指令中完成的。关于如何进行这项工作的任何指示? 在将输入 val 设置为无济于事后,我尝试调用 scope.$apply 和 scope.$digest。如果我不应该使用 jQuery,那么设置值的角度方式是什么? 谢谢

【问题讨论】:

  • 你为什么要使用 jQuery?你能告诉我们你的 HTML 是什么样的吗?
  • 您通常不会在 Angular 应用程序中使用 jquery(除了在指令链接函数或其他东西中)。您将需要展示到目前为止您已经尝试过的内容以及一些示例代码,然后才会被否决和 \ 或关闭。

标签: angularjs


【解决方案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);

【讨论】:

  • @GPicazo 如果您不介意为我回答有关您的代码的新问题,我将不胜感激。我是 JS、Angular 和 jQuery 的新手,所以我学到了很多东西。我很好奇isStartDateInitializedonStartDateSet 是这些自定义函数名还是它们内置在Angular 库中的库函数中?
  • @dalelandry- 您提到的属性和方法是自定义的并且特定于正在构建的应用程序。 $scope 对象(和概念)特定于 Angular,但附加到它的方法特定于该 Angular 应用程序。例如,如果你和我都在构建完全不同的 Angular 应用程序,我们都将直接或间接地处理 $scope(s)。但是,附加到该范围的属性和方法可能会有所不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多