Vue v-if v-for v-bind v-on

简介:

v-if

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

v-for

<ul id="example-1">
  <li v-for="item in items">
    {{ item.message }}
  </li>
</ul>
var example1 = new Vue({
  el: '#example-1',
  data: {
    items: [
      {message: 'Foo' },
      {message: 'Bar' }
    ]
  }
})

v-bind

<!-- 绑定一个属性 -->
<img v-bind:src="imageSrc">
<!-- 缩写 -->
<img :src="imageSrc">
<!-- with inline string concatenation -->
<img :src="'/path/to/images/' + fileName">

v-on

<!-- 方法处理器 -->
<button v-on:click="doThis"></button>
<!-- 内联语句 -->
<button v-on:click="doThat('hello', $event)"></button>
<!-- 缩写 -->
<button @click="doThis"></button>
<!-- 停止冒泡 -->
<button @click.stop="doThis"></button>
<!-- 阻止默认行为 -->
<button @click.prevent="doThis"></button>
<!-- 阻止默认行为,没有表达式 -->
<form @submit.prevent></form>
<!--  串联修饰符 -->
<button @click.stop.prevent="doThis"></button>
<!-- 键修饰符,键别名 -->
<input @keyup.enter="onEnter">
<!-- 键修饰符,键代码 -->
<input @keyup.13="onEnter">

案例整合

<!DOCTYPE html>
<html lang="zh-cmn-Hans">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
    <meta content="telephone=no" name="format-detection" />
    <title>关注的人</title>
    <link rel="stylesheet" type="text/css" href="../css/aui.2.0.css" />
    <link href="../css/qsc-user.css" rel="stylesheet" type="text/css">
    <link href="../css/ddd-dialog.css" rel="stylesheet" type="text/css">
    <style type="text/css">
        .cont {
            margin-top: 5em!important;
        }


        .tu img {
            display: block;
            width: 50%;
            margin: 10px auto;
        }

        body {
            background-color: #fff;
            font-family: "微软雅黑";
        }

        .aui-bar-nav {

            background: #00d8c9;
        }

        .color_organ{
            color: #ff901a;
        }

        [v-cloak] {
            display: none;
        }
    </style>
</head>

<body>
<header class="aui-bar aui-bar-nav">
    <a class="aui-pull-left aui-btn ">
        <span class="aui-iconfont aui-icon-left"></span>
    </a>
    <div class="aui-title">关注的人</div>
</header>
<div id="content" class="aui-content aui-margin-b-15" v-cloak>
    <div v-if="Items.length == 0">
        <div class="cont">
            <div class="tu">
                <img src="../image/nodata5.png">
            </div>
        </div>
    </div>
    <div v-else>
    <ul class="aui-list aui-media-list">
        <li class="aui-list-item aui-list-item-middle" v-for="Item in Items">
            <div class="aui-media-list-item-inner">
                <div class="aui-list-item-media" style="width: 3rem;">
                    <img v-bind:src="Item.Avatar" class="aui-img-round aui-list-img-sm">
                </div>
                <div class="aui-list-item-inner">
                    <div class="aui-list-item-text">
                        <div class="aui-list-item-title aui-font-size-14" v-cloak>{{Item.Nickname}}
   
                        </div>
                    </div>
                    <div class="aui-list-item-text">
                        我直播,我快乐
                    </div>
                </div>
                <div class="aui-list-item-right aui-margin-r-15">
                    <input type="checkbox" class="aui-radio" checked v-on:click="follow(Item.RongCustomerId,$event)">
                </div>
            </div>
        </li>
    </ul>
    </div>
</div>


<script type="text/javascript" src="../script/api.js"></script>
<script type="text/javascript" src="../script/config.js"></script>
<script type="text/javascript" src="../script/common.js"></script>
<script type="text/javascript" src="../script/vue.js"></script>
<script type="text/javascript" src="../script/jquery.min.js"></script>

<script>
    var user;
    apiready = function () {
        user = $api.getStorage('user');
        fix_status_bar();
        // 获取账户数据
        api.ajax({
            url : BASE_URL_ACTION + '/RongCloud/GetSubscriptionList',
            method : 'post',
            data : {
                values : {
                    rongCustomerId : user.person_id,
                    subscribe: 0,
                    pageIndex:0,
                    pageSize:20
                }
            }
        },function(json, err) {
            var header_vm = new Vue({
                el: '#content',
                data: json,
                methods:{
                    follow:function (RongCustomerId,e) {
                        var target = e.currentTarget;
                        if ($(target).is(":checked")) {// 关注
                            follow(RongCustomerId,user.person_id,1);
                        } else  { // 取消关注
                            follow(RongCustomerId,user.person_id,0);
                        }

                        // 发送页面刷新事件
                        api.sendEvent({
                            name: 'diamond_reload',
                            extra: {
                            }
                        });
                    }
                }
            })
        });

    }

    // 关注主播
    function follow(roomId,rongCustomerId,subscribe) { // subscribe 1关注 0取消关注
        api.ajax({
            url : BASE_URL_ACTION + '/RongCloud/ChatRoomSubscribe',
            method : 'post',
            data : {
                values : {
                    roomId:roomId, // 主播的融云id
                    rongCustomerId : rongCustomerId,
                    subscribe:subscribe
                }
            }
        }, function(json, err) {
        });
    }
</script>

</body>


</html>

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6698551.html,如需转载请自行联系原作者


相关文章
|
1天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
1天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
6天前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex
|
JavaScript 前端开发 数据格式
|
14天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
6天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发
|
14天前
|
缓存 JavaScript 搜索推荐
Vue SSR(服务端渲染)预渲染的工作原理
【10月更文挑战第23天】Vue SSR 预渲染通过一系列复杂的步骤和机制,实现了在服务器端生成静态 HTML 页面的目标。它为提升 Vue 应用的性能、SEO 效果以及用户体验提供了有力的支持。随着技术的不断发展,Vue SSR 预渲染技术也将不断完善和创新,以适应不断变化的互联网环境和用户需求。
31 9
|
13天前
|
缓存 JavaScript UED
Vue 中实现组件的懒加载
【10月更文挑战第23天】组件的懒加载是 Vue 应用中提高性能的重要手段之一。通过合理运用动态导入、路由配置等方式,可以实现组件的按需加载,减少资源浪费,提高应用的响应速度和用户体验。在实际应用中,需要根据具体情况选择合适的懒加载方式,并结合性能优化的其他措施,以打造更高效、更优质的 Vue 应用。
|
12天前
|
JavaScript
如何在 Vue 中使用具名插槽
【10月更文挑战第25天】通过使用具名插槽,你可以更好地组织和定制组件的模板结构,使组件更具灵活性和可复用性。同时,具名插槽也有助于提高代码的可读性和可维护性。
15 2
|
12天前
|
JavaScript
Vue 中的插槽
【10月更文挑战第25天】插槽的使用可以大大提高组件的复用性和灵活性,使你能够根据具体需求在组件中插入不同的内容,同时保持组件的结构和样式的一致性。
14 2