如何将多个对象值作为单个对象发送到javascript函数

时间:2018-03-22 02:48:16

标签: javascript html angularjs

我正在开发angularjs应用程序。我正在迭代响应并显示在表中,当用户点击表行信息时,我将json值传递给java脚本,我将进一步处理并显示信息。

<tr ng-repeat="info in responseData">
<td>
    {{info.id}}</td>
<td>
    <a href="javascript:void(0)"
       ng-click="showDetails(x.product1Data)">
    product1 Data</a>
</td>
<td style="width:15%;text-align: center;">
    <a href="javascript:void(0)"
       ng-click="showDetails(x.product2Data)">
    product2 Data </a>
</td>
<td style="width:15%;text-align: center;">
    <a href="javascript:void(0)"
       ng-click="showDetails(x.product3Data)">
    product3 Data</a>
</td>
<td>
    <a href="javascript:void(0)"
       ng-click="showDetails(..)">Show All Product Data </a>
</td>
</tr>

在上面的html代码中,当用户点击显示所有产品数据时,我想将x.product1Data,x.product2Data,x.product3Data值传递给showDetails(..)。当用户点击显示所有产品数据

时,如何在showDetails中传递所有3个对象的任何输入

js code:

$scope.showDetails = function(productInfo){
//productInfo contains the product information
agularjs.forEach(productInfo,function(value,key){

}
}

4 个答案:

答案 0 :(得分:1)

您可以创建一个名为showDetailSet()的函数,该函数将数组作为参数。它可以做类似的事情(你必须要明确它的范围):

function showDetailSet(products) {
    products.forEach(p => showDetails(p))
}

然后你会把它称为ng-click="showDetailSet([x.product1Data, x.product2Data, x.product3Data])"

答案 1 :(得分:0)

您可以直接致电所有showDetail

ng-click="showDetails(x.product1Data); showDetails(x.product2Data); showDetails(x.product3Data);">

你也可以像传统函数一样传递多个参数,但你必须为此重构showDetails

答案 2 :(得分:0)

根据您的Json数组的格式,您可以推送连续变量,例如

showDetails(x.product1Data.concat(x.product2Data.concat(x.product3Data)));

答案 3 :(得分:0)

通常,参数可以通过以下代码发送,

showDetails(x.product1Data,x.product2Data,product3Data)

不知道为什么这不能解决您的问题,如果它不起作用,请按照下面的说法进行操作,

只需通过info,即可获得productData函数中的所有showDetails

 <tr ng-repeat="info in responseData">
    <td>
        {{info.id}}</td>
    <td>
        <a href="javascript:void(0)"
           ng-click="showDetails(info.product1Data,$index)">
        product1 Data</a>
    </td>
    <td style="width:15%;text-align: center;">
        <a href="javascript:void(0)"
           ng-click="showDetails(info.product2Data,$index)">
        product2 Data </a>
    </td>
    <td style="width:15%;text-align: center;">
        <a href="javascript:void(0)"
           ng-click="showDetails(info.product3Data,$index)">
        product3 Data</a>
    </td>
    <td>
        <a href="javascript:void(0)"
           ng-click="showDetails(info,-1)">Show All Product Data </a>
    </td>
    </tr>

并在控制器中

$scope.showDetails = function(productInfo,index){
  if(index==-1)
   {
        // do your stuff for show all details
   }
   else{
      //productInfo contains the product information
       agularjs.forEach(productInfo,function(value,key){

       }
   }
}