A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2、实现 标题和结算功能组件
  • 标题组件实现动态渲染
    • 从父组件把标题数据传递过来 即 父向子组件传值
    • 把传递过来的数据渲染到页面上  

  • 结算功能组件
    • 从父组件把商品列表list 数据传递过来 即 父向子组件传值
    • 把传递过来的数据计算最终价格渲染到页面上  
    • [AppleScript] 纯文本查看 复制代码
       <div id="app">
          <div class="container">
            <my-cart></my-cart>
          </div>
        </div>
        <script type="text/javascript" src="js/vue.js"></script>
        <script type="text/javascript">
           # 2.2  标题组件     子组件通过props形式接收父组件传递过来的uname数据
          var CartTitle = {
            props: ['uname'],
            template: `
              <div class="title">{{uname}}的商品</div>
            `
          }
      	# 2.3  商品结算组件  子组件通过props形式接收父组件传递过来的list数据   
          var CartTotal = {
            props: ['list'],
            template: `
              <div class="total">
                <span>总价:{{total}}</span>
                <button>结算</button>
              </div>
            `,
            computed: {
              # 2.4    计算商品的总价  并渲染到页面上 
              total: function() {
                var t = 0;
                this.list.forEach(item => {
                  t += item.price * item.num;
                });
                return t;
              }
            }
          }
          Vue.component('my-cart',{
            data: function() {
              return {
                uname: '张三',
                list: [{
                  id: 1,
                  name: 'TCL彩电',
                  price: 1000,
                  num: 1,
                  img: 'img/a.jpg'
                },{
                  id: 2,
                  name: '机顶盒',
                  price: 1000,
                  num: 1,
                  img: 'img/b.jpg'
                },{
                  id: 3,
                  name: '海尔冰箱',
                  price: 1000,
                  num: 1,
                  img: 'img/c.jpg'
                },{
                  id: 4,
                  name: '小米手机',
                  price: 1000,
                  num: 1,
                  img: 'img/d.jpg'
                },{
                  id: 5,
                  name: 'PPTV电视',
                  price: 1000,
                  num: 2,
                  img: 'img/e.jpg'
                }]
              }
            },
      [AppleScript] 纯文本查看 复制代码
      #  2.1  父组件向子组件以属性传递的形式 传递数据      #   向 标题组件传递 uname 属性   向 商品结算组件传递 list  属性  
            template: `
              <div class='cart'>
                <cart-title :uname='uname'></cart-title>
                <cart-list></cart-list>
                <cart-total :list='list'></cart-total>
              </div>
            `,
            components: {
              'cart-title': CartTitle,
              'cart-list': CartList,
              'cart-total': CartTotal
            }
          });
          var vm = new Vue({
            el: '#app',
            data: {
      
            }
          });
      
        </script>
      



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马