You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS应用中如何将多对象值作为单个对象传入JavaScript函数

解决AngularJS表格行点击传递JSON数据到函数的问题

看你代码里的问题应该是点击链接时没法正确把当前行的JSON数据传给showDetails函数吧?你写的ng-click="showDetails(x.product1Data)"里用了x,但你的ng-repeat循环变量是info,这就是核心问题啦!

修正后的表格代码

<tr ng-repeat="info in responseData">
  <td>{{info.id}}</td>
  <td>
    <!-- 把x换成当前循环的info变量,才能拿到当前行的对应数据 -->
    <a href="javascript:void(0)" ng-click="showDetails(info.product1Data)"> product1 Data</a>
  </td>
  <td style="width:15%;text-align: center;">
    <!-- 如果有其他数据需要传递,也记得用info变量 -->
    <a href="javascript:void(0)" ng-click="showDetails(info.otherRelatedData)">其他数据</a>
  </td>
</tr>

控制器里的showDetails函数示例

在你的AngularJS控制器里,只需要接收传入的JSON数据,就可以做后续处理了,比如打印查看、展示模态框或者绑定到页面上:

app.controller('YourPageController', function($scope) {
  // 模拟你的响应数据
  $scope.responseData = [
    {id: 1, product1Data: {name: "产品A", price: 199, stock: 50}},
    {id: 2, product1Data: {name: "产品B", price: 299, stock: 20}}
  ];

  $scope.showDetails = function(productData) {
    // 先打印数据确认是否正确传递
    console.log('当前选中的产品详情:', productData);
    // 也可以把数据绑定到作用域,在页面的弹窗/详情区展示
    $scope.currentProductDetails = productData;
  };
});

额外小提示

  • 其实可以不用javascript:void(0),直接去掉href属性,然后给a标签加个cursor: pointer的CSS样式,就能实现点击效果,还不会有跳转问题。
  • 如果后端返回的product1Data是JSON字符串而不是对象,那你需要在控制器里先用JSON.parse()转成对象再传递,但AngularJS一般会自动解析响应里的JSON,所以大概率不需要额外处理。

内容的提问来源于stack exchange,提问作者dexter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:13:07