javascript - 如何在 ng-click 中传递 php 对象

标签 javascript angularjs

在 ng-click 中传递 php 变量是可以理解的,但是我如何通过 ng-click 函数传递完整的 php 对象我已经成功地通过它传递了 JavaScript 对象,但我无法传递 php 对象任何帮助将不胜感激。这是我的脚本:

<ul>
   <!-- Retrieving of main products -->
                            <? 
                              if(isset($products)):
                                foreach($products as $row):  

                            ?>
                                <li>
                                    <a href="products/<?=$row->sub_c_id?>/<?=$row->pid?>" class="title colr"><?=$row->pname?></a>
                                    <a href="products/<?=$row->sub_c_id?>/<?=$row->pid?>" class="thumb">
                                     <img src="<?php echo base_url(); ?>uploads/<?=$row->product_pic?>" style="width:157px; height:181px;" alt="" />
                                    </a>

                                    <div class="prodbuttons">
                                        <p class="price bold"><?=$row->pprice?></p>
                                        <a class="cart upper" ng-click="addtocart(<?=$row->pid?>,'<?=$this->session->userdata('session_id'); ?>','<?=$row->pname?>',<?=$row->pprice?>,<?=$row->pquantity?>,<?=$row->sub_c_id?>,'<?=$row->product_pic?>','<?=$row->color?>','<?=$row->size?>',1)">Add to Cart</a>
                                        <a ng-click="check(<? json_encode($row) ?>)">email me</a>
                                    </div>
                                </li>
                             <? endforeach; endif; ?>  


                            </ul>

我也尝试过这样的方法,但它也给了我错误:

<a ng-click="check(<? echo json_encode($row) ?>)">email me</a>

Angular js 脚本:

$scope.addtocart=function(pid,current_session_id,pname,pprice,pquantity,sub_c_id,product_pic,color,size,qty){
             $scope.errors.splice(0, $scope.errors.length); // remove all error messages
             $scope.msgs.splice(0, $scope.msgs.length);
             $http.post('/product/ng_insertincart', { pid : pid, current_session_id : current_session_id, pname : pname, pprice : pprice, pquantity : pquantity,sub_c_id : sub_c_id,product_pic : product_pic,color : color,size : size, qty : qty}
                        ).success(function(data, status, headers, config) {
                            if (data.msg != '')
                            {
                                $scope.msgs.push(data.msg);
                                console.log(data);
                            }
                            else
                            {
                                $scope.msgs.push(data.msg);
                            }
                        }).error(function(data, status) { // called asynchronously if an error occurs
                           // or server returns response with an error status.
                            $scope.errors.push(status);
                        });
        }
     $scope.check=function(argument) {
         console.log(argument);
     }

最佳答案

哎呀。由于您的客户以某种方式强制您这样做,那么至少将 php 内容移至您的 Angular Controller 。像这样的东西:

var controller = function()
{
<?php 
    // Convert product objects to array then encode as json
    $items = array();
    foreach($products as $product) {
        $item = array(
            'pid' => $product->pid,
            'pprice' => $product->pprice,
            ...
        $items[] = $item;
     }
     $productsJson = json_encode($items);
?>
$scope.products = angular.fromJson('<?php echo $productsJson; ?>');

现在您的 Controller 中有一个合适的产品数组,您可以在模板中使用良好的 ole ng-repeat。但即使 $products 到 json 字符串的转换也不需要在模板中完成。在您的主 php 代码中执行此操作,然后将字符串传递给模板。还有序列化器可以帮助将 php 对象转换为数组:http://symfony.com/doc/current/components/serializer.html

关于javascript - 如何在 ng-click 中传递 php 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29422951/

相关文章:

javascript - 处理中的单独(类)文件

javascript - Angular js $http 请求获取失败

angularjs - 如何在另一个指令中调用一个指令

javascript - 从日期时间转换为时间并将其绑定(bind)到 Angular 时间选择器?

javascript - 如何从 Html Css 和 Jquery 调用事件

javascript - 使用 PHP 和 angular.js 获取和设置 session

javascript - 使用 JSLint 并遵循它是否有意义?

javascript - 如何使用 Javascript 将本地存储项添加到函数调用之前

javascript - 我如何在 AngularJS 中创建和聚焦新元素?

javascript - 带有动态添加数据绑定(bind)的 Angular 表单提交