AngularJS - цикл по нескольким массивам объектов json

0

Я хочу пропустить несколько массивов объектов json с помощью одного ng-click.

Пример. См. Следующий Plunker: https://plnkr.co/edit/7P4Oha5OdfTC5wndUebE?p=preview.

Когда я нажимаю на одно из моих синих чисел (в любом случае, какой элемент), он должен перейти к следующему для всех элементов. На данный момент другой элемент исчезает.

Поэтому в конце все элементы всегда должны иметь такое же числовое значение, когда я нажимаю на него.

Как я могу это сделать? Спасибо за вашу помощь...

(function () {
    'use strict';

    angular
        .module('app', [])
        .controller('myctrl', myctrl);

    function myctrl($scope, $http) {
        $http.get("data.json")
            .success(function (data) {
                $scope.data = data;
                $scope.nbr = 0;
            });

        $scope.next = function (dataId, nbr) {
            $scope.nbr = ($scope.nbr + 1) % $scope.data.data[dataId].numbers.length;
        };

        $scope.change = function (dataId, nbr) {
            $scope.data.data[dataId].numbers[nbr].bench = $scope.data.data[dataId].numbers[nbr].number1 +
                $scope.data.data[dataId].numbers[nbr].number2 +
                $scope.data.data[dataId].numbers[nbr].number3;
        }
    }
})();
  • 0
    Можете ли вы быть более точным в том, чего вы хотите достичь?
  • 0
    Не очень понятно, чего вы хотите добиться здесь
Показать ещё 1 комментарий
Теги:
angularjs-ng-click

1 ответ

0
Лучший ответ

Идентификатор проблемы, который вы пытаетесь изменить массив объектов данных, используя индекс объекта.

 $scope.change = function(dataId, nbr) {

        $scope.data.data[dataId].numbers[nbr].bench =     $scope.data.data[dataId].numbers[nbr].number1 + 
                                                          $scope.data.data[dataId].numbers[nbr].number2 +
                                                          $scope.data.data[dataId].numbers[nbr].number3;
     }

Когда вы нажимаете любую ссылку next() и меняете(), эти функции запускаются.

следующая функция изменит значение nbr от 0 до 1.

функция изменения обновляет свойство bench на основе проходов индекса и значения nbr.

Если вы нажмете ссылку, она будет передавать индекс 0 или 1 (на основе первой и второй ссылок, нажатых), функция изменения обновит только объект, к которому обращается этот индекс $ scope.data.data [dataId]

Теперь проблема в том, что массив обновляется для одного объекта, но значение nbr изменяется для обеих ссылок.

так как для другого объекта в другом индексе нет свойства bench, он будет отображаться пустым.

используйте ниже код, чтобы понять его

 $scope.change = function(dataId, nbr) {


       for(var i = 0; i < $scope.data.data.length; i ++)
       {

        $scope.data.data[i].numbers[nbr].bench =     $scope.data.data[i].numbers[nbr].number1 + 
                                                          $scope.data.data[i].numbers[nbr].number2 +
                                                           $scope.data.data[i].numbers[nbr].number3;
       }
     }

Plunker: https://plnkr.co/edit/fGtpjmbrY5bcmC8VgF5R?p=preview

  • 0
    Именно то, что я искал - большое спасибо

Ещё вопросы

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