AngularJS中遍历会话数组并绑定元素至目标数组的实现咨询
解决AngularJS数组遍历与绑定问题
嘿,我来帮你搞定这个数组遍历和绑定的需求!结合你给出的代码结构,我分两种常见场景给你具体实现方案:
场景1:直接将会话数组元素添加到目标数组
如果只是想把$scope.pickedTransfers里的每一项原封不动放到$scope.multipleTransferGotten中,用AngularJS自带的angular.forEach就能轻松实现:
// 遍历pickedTransfers数组 angular.forEach($scope.pickedTransfers, function(transferItem) { // 将当前元素推入目标数组 $scope.multipleTransferGotten.push(transferItem); });
小提示:用
angular.forEach比原生Array.prototype.forEach更适配AngularJS的生态,它能处理数组和对象,还能确保数据变更被Angular的脏检查机制捕获。
场景2:将会话元素映射到指定模板对象后再添加
如果需要把pickedTransfers里的元素字段,对应赋值到你定义的newParameters模板结构中,再添加到目标数组,记得要深拷贝模板对象(避免所有元素共用同一个引用),具体代码如下:
angular.forEach($scope.pickedTransfers, function(transferItem) { // 深拷贝newParameters模板,生成独立的新对象 var newTransferEntry = angular.copy($scope.newParameters); // 按实际字段对应关系赋值,这里假设transferItem的字段名和newParameters一致 newTransferEntry.UserId = transferItem.UserId; newTransferEntry.Udid = transferItem.Udid; newTransferEntry.TransType = transferItem.TransType; newTransferEntry.SourceAccNumber = transferItem.SourceAccNumber; newTransferEntry.SourceAccName = transferItem.SourceAccName; newTransferEntry.BeneficiaryAccName = transferItem.BeneficiaryAccName; newTransferEntry.BeneficiaryAccNumber = transferItem.BeneficiaryAccNumber; newTransferEntry.Amount = transferItem.Amount; newTransferEntry.Remarks = transferItem.Remarks; newTransferEntry.DestBankCode = transferItem.DestBankCode; newTransferEntry.AuthToken = transferItem.AuthToken; newTransferEntry.UseToken = transferItem.UseToken; // 将映射后的新对象推入目标数组 $scope.multipleTransferGotten.push(newTransferEntry); });
关键注意事项:异步处理
如果bank.getPaymentList()是异步请求(比如AJAX调用,返回Promise),一定要在请求完成的回调里执行遍历逻辑,否则$scope.pickedTransfers可能还是空数组:
// 异步获取支付列表后处理遍历 bank.getPaymentList($scope.paymentList) .then(function(response) { // 假设返回的数组数据在response.data中,根据实际接口调整 $scope.pickedTransfers = response.data; // 在这里执行上面的遍历逻辑 angular.forEach($scope.pickedTransfers, function(transferItem) { var newTransferEntry = angular.copy($scope.newParameters); // 字段赋值... $scope.multipleTransferGotten.push(newTransferEntry); }); }) .catch(function(error) { console.error('获取支付列表失败:', error); });
内容的提问来源于stack exchange,提问作者Donald
相关产品推荐
相关产品推荐

