将多个php变量传递到范围对象列表

将多个php变量传递到范围对象列表,php,wordpress,angularjs,angularjs-controller,angularjs-ng-init,Php,Wordpress,Angularjs,Angularjs Controller,Angularjs Ng Init,我是AngularJS的新手,决定尝试一下。当我读到它时,我可以简单地插入到现有的HTML中,它就会工作。现在我被困在这一点上了。 以下是我用wordpress和angularjs编写的PHP代码: <?php $the_query = new WP_Query(array('post_type' => 'products', 'nopaging' => 'true')); <div class="container"> <?php w

我是AngularJS的新手,决定尝试一下。当我读到它时,我可以简单地插入到现有的HTML中,它就会工作。现在我被困在这一点上了。 以下是我用wordpress和angularjs编写的PHP代码:

<?php
$the_query = new WP_Query(array('post_type' => 'products', 'nopaging' => 'true'));
    <div class="container">
        <?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
            <?php $name         = get_field("name"); ?>
            <?php $tree         = get_field("tree"); ?>
            <div class="material" ng-click="productMaterial(product)"
                ng-init="product={name:'<?php echo $name; ?>',tree:'<?php echo $tree; ?>'};">
            </div>
        <?php endwhile; ?>
    </div>
所以问题是,每次我点击任何产品,都会在控制台中打印最后一个产品,即
Variostep CL
。我知道循环中的每个新循环都会覆盖以前的产品对象,并且只存储最后一个产品

如何传递产品数据,以便在我单击网页时,将正确的产品数据记录到控制台

正如我所看到的,另一种方法是使用纯angularjs方法,即我执行API请求并接收JSON,然后使用ng repeat而不是WP循环,但这将需要我重写更多的代码

我想做一个递增计数器,存储产品数组,然后通过angular controller中的索引进行访问,或者可能有更简单的方法吗

如果我的问题太复杂,我可以带上网页快照和更清晰的解释。谢谢你引用我的话

ngInit
的唯一适当用法是对
ngRepeat
的特殊属性进行别名,如下面的演示所示。除了这种情况,您应该使用控制器而不是
ngInit
来初始化作用域上的值

但是,由于您在PHP中使用Angular,我不确定这个建议是否仍然有效

我认为您总是看到最后一个产品的原因是,您不断地使用PHP代码循环的
ng init
声明覆盖控制器中的同一数据段。实际上,如果我没有弄错的话,您的控制器实际上已经通过使用
ng init
定义了
$scope.product
。因此,所有的
ng click
调用都将使用共享的
$scope.product
作为参数


作为建议,如果您可以一次获取所有产品数据(即作为一个数组),您应该这样做,将数据存储到控制器中,然后使用
ng repeat
为每个产品数据创建HTML。

嘿,谢谢您的建议。确实是这样的,我担心我必须把它重新制作成ng repeat。
calculator.controller('Calc1ProductController', ['$scope', 'calc1Service', function($scope, calc1Service) {

    $scope.productMaterial = function(product) {
        console.log("Clicked product: " + $scope.product.name); // print always Variostep CL
    };
}]);