Javascript Angularjs ng模型值在被其他函数修改时不在视图中更新

Javascript Angularjs ng模型值在被其他函数修改时不在视图中更新,javascript,angularjs,angular-ngmodel,ionic,Javascript,Angularjs,Angular Ngmodel,Ionic,我正在使用AngularJS创建一个工资单应用程序,其中包含一个页面,用户可以编辑作业的开始时间和结束时间字段,还可以通过修改另外两个字段(小时和分钟)来更改结束时间,这两个字段指的是作业的工作时间长度 到目前为止,当用户使用ng change更改开始时间或结束时间字段时,我已经能够使小时和分钟字段自动正确更新。我现在正尝试以另一种方式进行操作,以便根据小时和分钟字段自动更新结束时间,尽管存储结束时间的变量已正确更新,但显示结束时间的输入字段不会更改 以下是四个字段的HTML:

我正在使用AngularJS创建一个工资单应用程序,其中包含一个页面,用户可以编辑作业的开始时间和结束时间字段,还可以通过修改另外两个字段(小时和分钟)来更改结束时间,这两个字段指的是作业的工作时间长度

到目前为止,当用户使用ng change更改开始时间或结束时间字段时,我已经能够使小时和分钟字段自动正确更新。我现在正尝试以另一种方式进行操作,以便根据小时和分钟字段自动更新结束时间,尽管存储结束时间的变量已正确更新,但显示结束时间的输入字段不会更改

以下是四个字段的HTML:

        <label class="item item-input">
            <span class="input-label">Start Time</span>
            <input type="time" class="item-input input-label editable" ng-model="data.startTimeObject" ng-change="updateHoursAndMinutes('start')"/>
        </label>
        <label class="item item-input">
            <span class="input-label">End Time {{data.endTimeObject.getHours()}}</span>
            <input type="time" class="item-input input-label editable" ng-model="data.endTimeObject" ng-change="updateHoursAndMinutes('end')" />
        </label>
        <label class="item item-input">
            <span class="input-label">Hours</span>
            <input type="number" class="item-input input-label editable" min="0" max="24" ng-model="editedRecord.hours" ng-change="updateEndTime()" />
        </label>
        <label class="item item-input">
            <span class="input-label">Minutes</span>
            <input type="number" class="item-input input-label editable" min="0" max="59" ng-model="editedRecord.minutes" ng-change="updateEndTime()" />
        </label>

{{data.endTimeObject.getHours()}}“结束时间”标签旁边的{data.endTimeObject.getHours()}}显示从updateEndTime()函数更新时的正确小时数,但用户可以手动编辑结束时间的字段不会自动显示更新后的结束时间值。

不知道您是否仍然存在此问题,但也许有人偶然发现了这一点。使用setSeconds更新date对象对对象本身有效(我可以在toast中输出它),但输入字段不会显示新值

最后,我要做的是设置一个全新的日期对象,而不仅仅是使用函数。在你的情况下,也许你可以这样做

$scope.updateEndTime = function() {
    // previous statements
    var newTime = new Date(1970, 0, 1, 0, 0, 0, 0);
    newTime.setHours(savedEndTimeHours + actualHourDifference);
    newTime.setMinutes(savedEndTimeMinutes + actualMinuteDifference);
    $scope.data.endTimeObject = newTime;
}
如果需要,您可能可以在新对象中重用旧日期对象中的值

为什么这样做我不太清楚(对AngularJS来说是很新的),但我想除非整个对象被替换,否则这种变化是无法识别的

$scope.updateEndTime = function() {
    // previous statements
    var newTime = new Date(1970, 0, 1, 0, 0, 0, 0);
    newTime.setHours(savedEndTimeHours + actualHourDifference);
    newTime.setMinutes(savedEndTimeMinutes + actualMinuteDifference);
    $scope.data.endTimeObject = newTime;
}