如何在更改数组时选择$ watch函数中的选项卡?

时间:2015-10-29 00:11:33

标签: javascript angularjs angular-material

我尝试使用Angular Material中的标签来方便日期之间的导航(只是滑动标签以更改日期),我还有一个日期选择器可以快速跳转到另一个日期。

装载工作正常;我使用当前日期初始化日期选择器,并在当月每天加载标签。

如果我在另一个月选择日期,我会重新加载标签以显示适当的日期。为此,我在日期选择器上添加了$ watch。这工作正常,但在$ watch结束时我设置tabSelected谁是要显示的选项卡的索引。那部分不起作用,因为它就像摘要过程没有完成。

我考虑一个解决方案:只需使用新值重命名选项卡。但是有没有办法像我一样重置数组并设置索引:

$scope.$watch('dateSelected', function (newValue, oldValue) {
    if ((newValue.getMonth() != oldValue.getMonth())
        || (newValue.getFullYear() != oldValue.getFullYear())) {
        $scope.tabs = initialiseGamesTabs($scope.dateSelected);
    }

    $scope.tabSelected = getTabSelected();
});

1 个答案:

答案 0 :(得分:0)

变量$scope.dateSelected本身没有变化,因为更改日期只会更改变量'属性。您必须通过将recursively的第三个参数添加为$watch来观察变量true

代码:

$scope.$watch('dateSelected', function (newValue, oldValue) {
    if ((newValue.getMonth() != oldValue.getMonth())
        || (newValue.getFullYear() != oldValue.getFullYear())) {
        $scope.tabs = initialiseGamesTabs($scope.dateSelected);
    }

    $scope.tabSelected = getTabSelected();
}, true); // <----------- add true here

进一步阅读: $watch an object