Я хочу пропустить несколько массивов объектов 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;
}
}
})();
Идентификатор проблемы, который вы пытаетесь изменить массив объектов данных, используя индекс объекта.
$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