VUE2.0实现购物车和地址选配功能学习第四节

第四节 v-on实现金额动态计算

用¥金额 进行格式处理,可以使用原生js进行转换,但是在vuei,使用filter过滤器更加方便

注:

1.es6语法=>和import等

好处在于res参数后的function函数内的this作用域,不弄在外部声明变量了。

methods:{

cartView:function(){

let _this=this;

this.$http.get("data/cartData.json",{"id":123}).then( res=>{

this.productList =res.body.result.productList;
this.totalMoney=res.body.result.totalMoney;

}); }}

2.全局过滤器:可以在任何页面使用

html:{{item.productPrice*item.productQuentity | money('元')}}
js:
       Vue.filter("money",function (value,type) {
return"¥"+value.toFixed(2)+type;
})

代码:

<ul class="cart-item-list">
    <li v-for="(item,index) in productList">
        <!--v-for="item in productList"这是vue1.0的用法-->
        <div class="cart-tab-1">
            <!-- 单选 -->
            <div class="cart-item-check">
                <a href="javascipt:;" class="item-check-btn">
                    <svg class="icon icon-ok"><use xlink:href="#icon-ok"></use></svg>
                </a>
            </div>
            <!-- 商品图片 -->
            <div class="cart-item-pic">
                <img v-bind:src="item.productImage" alt="烟">
                <!--src="{{item.productImage}}"貌似不能使用-->
                <!--v-bind是比较好的办法,浏览器解析字符串直接写src会报错什么的-->
            </div>
            <!-- 商品名称 -->
            <div class="cart-item-title">
                <div class="item-name">{{item.productName+":"+index}}</div>
                <!--{{item.productName+":"+index}}-->
            </div>
            <!-- 赠品 -->
            <div class="item-include">
                <dl>
                    <dt>赠送:</dt>
                    <dd v-for="part in item.parts" v-text="part.partsName"></dd>
                </dl>
            </div>
        </div>
        <!-- 单价 -->
        <div class="cart-tab-2">
            <div class="item-price">{{item.productPrice | formatMoney}}</div>
        </div>
        <div class="cart-tab-3">
            <div class="item-quantity">
                <div class="select-self select-self-open">
                    <div class="quentity">
                        <a href="javascript:;">-</a>
                        <input type="text" v-model="item.productQuentity">
                        <!--双向数据绑定功能,实现总金额实时变化功能-->
                        <a href="javascript:;">+</a>
                    </div>
                </div>
                <div class="item-stock">有货</div>
            </div>
        </div>
        <div class="cart-tab-4">
            <!-- 总金额 -->
            <div class="item-price-total">{{item.productPrice*item.productQuentity | formatMoney}}</div>
        </div>
        <!-- 删除功能 -->

        <div class="cart-tab-5">
            <div class="cart-item-opration">
                <a href="javascript:;" class="item-edit-btn">
                    <svg class="icon icon-del"><use xlink:href="#icon-del"></use></svg>
                </a>
            </div>
        </div>

    </li>
</ul>js:
/**
 * Created by zs1414030853 on 2017/2/24.
 */
/*完整vue实例*/
var vm=new Vue({
    el:"#app",
    data:{
              totalMoney:0,
              productList:[]
        /*初始值*/
    },

    filters:{
         formatMoney:function (value) {
             return"¥"+value.toFixed(2);
     }
     /*局部过滤器只能在实例的范围内使用*/
    },

       mounted:function () {
        this.$nextTick(function () {

        });/*此时this和vm是等同的,这是mounted和ready的vue1和2的区别*/
         this.cartView();

    },

    methods:{
      cartView: function () {
             var _this =this;
             /* this.$http.jsonp*/
              this.$http.get("data/cart.json",{"id":123}).then(function (res) {
             _this.productList =res.body.result.productList;
             _this.totalMoney=res.body.result.totalMoney;
             /*在运行的时候打断点可以查看res等属性和包含的方法值等*/
          });
      }
    }

});

 


posted @ 2017-02-26 12:20  朱帅  阅读(329)  评论(0编辑  收藏  举报