AngularJS - 循环遍历几个 json 对象数组
AngularJS - Loop through several json object arrays
我想通过一次 ng-click 遍历多个 json 对象数组。
示例 - 请参阅以下 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;
}
}
})();
您的问题 id,您正试图通过使用对象的索引更改数据对象数组。
$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;
}
当您单击任何 link next() 和 change() 时,这些函数将被触发。
下一个函数将 nbr 的值从 0 更改为 1。
更改函数根据索引传递和 nbr 值更新替补 属性。
如果您点击 link 它将传递索引 0 或 1(基于点击的第一个和第二个 link),更改函数将仅更新此索引访问的对象 $scope.data.data[dataId]
现在的问题是数组针对单个对象进行了更新,但是 link.
的 nbr 值都发生了变化
因为其他索引处的其他对象没有工作台属性,所以会显示空白。
使用下面的代码使其正确
$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;
}
}
我想通过一次 ng-click 遍历多个 json 对象数组。
示例 - 请参阅以下 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;
}
}
})();
您的问题 id,您正试图通过使用对象的索引更改数据对象数组。
$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;
}
当您单击任何 link next() 和 change() 时,这些函数将被触发。
下一个函数将 nbr 的值从 0 更改为 1。
更改函数根据索引传递和 nbr 值更新替补 属性。
如果您点击 link 它将传递索引 0 或 1(基于点击的第一个和第二个 link),更改函数将仅更新此索引访问的对象 $scope.data.data[dataId]
现在的问题是数组针对单个对象进行了更新,但是 link.
的 nbr 值都发生了变化因为其他索引处的其他对象没有工作台属性,所以会显示空白。
使用下面的代码使其正确
$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;
}
}