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
相关产品推荐
相关产品推荐

