我知道$ scope。$ watch应该在指令中使用。但是,我相信我有一个特殊情况,在控制器中可能需要$ scope。$ watch。我在控制器上有一个日期变量,格式为:
$scope.myDateParts = {year: 2014, month: 1, day: 1};
我需要另一个代表myDateParts
日期的变量。因此,如果上面的变量发生变化,日期也需要改变:
$scope.myDate = new Date($scope.myDateParts.year, $scope.myDateParts.month, $scope.myDateParts.day);
myDateParts和myDate需要保持同步。我最初的解决方案是在myDateParts改变时手动更改myDate。但是,有许多地方myDateParts
可以改变,很难跟踪它改变的每个地方。为了解决这个问题,我想在myDateParts上使用$ scope。$ watch。我不确定这是否是解决此问题的正确方法。我的问题是 - 使用$ scope。$以这种方式观看正确的方法吗?如果没有,你能建议一种适合这种情况的技术吗?
答案 0 :(得分:2)
似乎它可能是一个很好的用途。由于new Date()
只会构建一次对象,因此当您更新$scope.myDateParts
时,它不会自动更新,您已经提到过了。
您可以执行以下操作:
$scope.$watch('myDateParts', function() {
// create new date
});
答案 1 :(得分:1)
是的,您可以在myDateParts上使用watch,在控制器中使用watch没有问题,但它会影响应用程序的性能,因为一只手表没有这样的性能问题。