Bs datepicker的值更新,但显示值不更新

时间:2020-10-06 18:38:51

标签: angularjs typescript razor datepicker

angularjs的版本是1.5.11。

我正在.NET MVC项目中使用angularjs中的bs-datepicker元素。这是我的日期选择器和一些用作我应用程序中的按钮的图像:

<input class="form-control"
                       type="text"
                       placeholder="Pick a Date (default today)."
                       data-date-format="MM-dd-yyyy"
                       data-min-date="today"
                       bs-datepicker
                       data-autoclose="true"
                       ng-model="tos.appointmentDay"
                       ng-change="tos.updateAppointments()"
                       style="width: 100px;" />
<div class="appointment-buttons">
                        <i class="fa fa-arrow-left fa-lg"
                             ng-click="tos.decrementAppointmentDate()" />
                        <i class="fa fa-arrow-right fa-lg"
                             ng-click="tos.incrementAppointmentDate()" />
                    </div>

我有两个箭头图像元素用作按钮,以在约会应用程序中更改一天的前一天或后一天。这些按钮确实可以正确地与该日期选择器一起更改日期(通过使用控制器中的函数),我可以看到它同时反映在日期选择器弹出窗口和代码中显示日期的其他文本输出中。

但是,当我通过两个箭头按钮更新我的应用程序中的subscriptionDay属性的值时,我的所有输出都会更新,包括datepicker的实际值,但是datepicker的文本输入字段中的显示值会更新不更新。为什么弹出窗口中的日期选择器的值会正确更新,而bs-datepicker的文本输入字段却未更新?

1 个答案:

答案 0 :(得分:0)

解决方案是,当您在JavaScript / TypeScript中对绑定到元素(在此情况下为日期选择器)的日期对象执行setDate调用时,它不会更新数据选择器。这是因为您需要显式分配已绑定到元素的对象以更改其值。对于bs-datepicker元素来说是这样,而对angularjs来说也是如此。

您应该:

//Do this.
var temp = original;
temp.setDate(newDate);
original = temp;

//Don't do this by itself.
original.setDate(newDate);