Angulajs:阵列中的ng-repeat

时间:2016-03-14 13:13:58

标签: arrays angularjs controller

我希望有人可以提供帮助。

我是AngularJS的新手,正在使用该框架进行我的第一个项目。我正在尝试创建一个简单的结账系统。

我有一个包含2列的html页面;左边是项目列表,右边是包含项目的篮子(购物车)。

这是项目清单;

<div class='panel-body'>
<div ng-repeat='m in merchandiseCtrl.merchandise'>
    <div class='row'>
        <!--START OF NESTED COLUMN-->

        <div class='col-xs-2'>
            <!--START OF LEFT NEST COLUMN-->
            <img ng-src='../images/{{ m.id }}.jpg' class='img-responsive'>
        </div>

        <div class='col-sm-4'>
            <strong>{{m.name}}</strong>
            <br>
            {{m.desc}}
        </div>
        <!--END OF LEFT NEST COLUMN-->

        <div class='col-xs-6'>
            <!--START OF RIGHT NEST COLUMN-->
            <div class='col-xs-6'>
                <!--MORE NESTED COLUMNS ... -->
                {{m.price}}
            </div>

            <div class='col-xs-2'>
                <input type='text' class='form-control input-sm' value='1'>
            </div>

            <div class='col-xs-4'>
                <button ng-click='merchandiseCtrl.addItemToBasket(m)' type='button' class='btn btn-primary' ng-click=''>Add Item</button>
            </div>
            <!--START OF LEFT NEST COLUMN-->
        </div>

    </div>
    <!--END OF NESTED COLUMN-->
    <hr>
</div>
<!--END OF ANGULAR REPEAT-->

这是当前使用的控制器。

//Controller:
app.controller('MerchandiseController', function(merchandiseService) {

    var that = this;

    merchandiseService.getMerchandise().success(function (data){
        that.merchandise = data;
    });

    var basket = [];
    this.addItemToBasket = function(item){

        console.log(item.name);
        basket.push(item);
        console.log(basket.length)
    },

    this.removeItem = function(item){
        console.log("remove me" + item.name);
    },

    this.total = function(){


        return total;
    }


});

现在,我打算用我已经添加到控制器中声明的数组'basket'的项目填充篮子(购物车)。我不确定如何在html中访问'basket'数组来重复内容。

这是我到目前为止的篮子(购物车)(我想打印出篮子阵列中的物品)......

<div ng:repeat='m in merchandiseCtrl BASKET???' class='row'>
<div class='col-sm-3'>{{ m.name }}</div>
<div class='col-sm-3'>Quantity</div>
<div class='col-sm-3'>{{ m.price }}</div>
<div class='col-sm-3 '>
    <button ng-click='merchandiseCtrl.removeItem(m)' type='button' class='btn btn-link btn-xs'>
        <span class='glyphicon glyphicon-trash'></span>
    </button>
</div>
<hr>

1 个答案:

答案 0 :(得分:1)

与重复列表中的项目的方式相同。 您不能使用var存储购物篮集合,而是将其附加到范围:

that.basket = [];
that.addItemToBasket = function(item){
    that.basket.push(item);
},

你只需在html中重复一遍:

<div ng:repeat='m in merchandiseCtrl.basket' class='row'>
<div class='col-sm-3'>{{ m.name }}</div>
<div class='col-sm-3'>Quantity</div>
<div class='col-sm-3'>{{ m.price }}</div>
<div class='col-sm-3 '>
<button ng-click='merchandiseCtrl.removeItem(m)' type='button' class='btn btn-link btn-xs'>
    <span class='glyphicon glyphicon-trash'></span>
</button>

另外,为了清楚起见,请将所有范围属性和方法附加到that,不要混合thisthat。我也会重命名&#34;那&#34;类似于&#34; vm&#34;或&#34; merchandiseVm&#34;