Как выбрать вкладку в функции $ watch при изменении массива?

0

Я попытался использовать вкладки в "Угловом материале", чтобы упростить навигацию между датами (просто скопировать вкладки для изменения даты), и у меня также есть выбор даты, чтобы быстро перейти к другой дате.

Погрузочная работа прекрасна; Я инициализировал сборщик данных с текущей датой и загрузкой вкладок с каждым днем в текущем месяце.

Если я выбираю дату в другой месяц, я перезагружаю вкладки, чтобы показать соответствующие даты. Чтобы сделать это, я добавлю $ 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();
});
Теги:
angular-material

1 ответ

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

Дальнейшее чтение: $ смотреть объект

  • 0
    Это не работает с истинным значением. Когда я меняю месяц, tabSelected (index) устанавливается правильно, но отображаемая вкладка является первой или последней ...
  • 0
    @JonathanAnctil Если $watch обнаруживает изменение, код работает. Многие html-связывания с tabSeleteted имеют что-то не так ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню