更新2012年4月19日下午12点太平洋标准时间:要在这个上吃乌鸦。问题不是Angular的数据绑定,而是计算日期的数学错误。我没有正确考虑计算时间的分钟和秒数。我只是减去彼此的时间戳,期待好几个小时出来。
我在AngularJS数据绑定方面遇到了麻烦,我的不同输入需要彼此相互绑定。
表单需要包含以下内容:
如果更改任何输入,则应更新其他输入。因此,以下结果将是理想的结果:
(原始日期时间为4月19日晚上10点)。用户输入'1小时'。结果日期为4月19日,结果时间为晚上11点。
在上面的示例的基础上,用户将日期输入更改为4月20日。 '小时'现在变为25小时。
我已经在每个变量上使用$scope.$watch
设置了观察者:
$scope.$watch('hours', function (newHours, oldHours, scope) {
if (newHours) {
var newEndDate = new Date(scope.origDate),
offHours = newEndDate.getHours();
newEndDate.setHours(offHours + newHours);
scope.endDate = newEndDate;
scope.endHours = newEndDate.getHours();
}
});
$scope.$watch('endHours', function (newEndHours, oldEndHours, scope) {
if (newEndHours) {
var newEndDate = new Date(scope.endDate);
newEndDate.setHours(newEndHours);
scope.endDate = newEndDate;
}
});
$scope.$watch('endDate', function (newEndDate, oldEndDate, scope) {
if (newEndDate) {
scope.hours = (newEndDate - scope.origDate) / (1000 * 60 * 60);
}
});
这些都可以自行完成,但是它们会导致一团糟。根据我对Angular的理解,似乎他们正在创建一个“反馈循环”。 编辑:即,模型“A”将更新并触发模型“B”的更改。然后,模型“B”将触发模型“A”的更改。
现在,是否可以临时暂停数据绑定,以便我可以只是更新模型而不会触发观察者?在我工作过的其他一些环境中(可以想到在Cocao上的UITableView),可以要求“停止更新”,对模型进行一些更改,然后“恢复更新。”
AngularJS中有这样的东西吗?如果没有,我没有到达这里,我怎样才能设置我的项目以实现所需的功能?
这是我的例子的plunkr。