Vue的部分指令系统以及 数据变化后页面不重新渲染的解决方法

前言

本文介绍了vue的部分基本指令,想了解更多基本指令,请阅读上篇文章。
ps:由于这是小编第二次创作,有很多不足的之处,希望各位大神海涵,欢迎各位大神在评论区补充 。


一、列表循环

1、遍历数组 < v-for=“每次要遍历的元素 in/of 数据源”> 或者可以写成 < v-for = “(每次要遍历的元素,下标) in/of 数据源”>
2、遍历对象 和上者一样,只是第二个参数变成键值对中的键名了,如果想要下标,我们需要第三个参数 ,注意数组没有第三个参数!!
2、遍历整数 < v-for=“每次要遍历的元素 in/of 整数最大值”>
ps:所谓的每次要遍历的元素就是我们新起的变量,只不过这个变量是空的。
小练习:九九乘法表

<p v-for="arr in  9">
            <span   v-for="arr2 in arr">{{arr}}&nbsp;&nbsp;*&nbsp;&nbsp;{{arr2}}&nbsp;&nbsp;=&nbsp;&nbsp;{{arr*arr2}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>

二、表单元素双向数据绑定

1设计模式:也就是网站的开发模式

 MVC
 M      model是数据模型层,所谓的视图模型成,就是data里的代码
 V       view是视图层,所谓的视图层就是,在vue挂载点里的html代码
 C       controller是控制器
 
MVVM
 M      model是数据模型层
 V       view是视图层
 VW   viewmodel视图模型层

(1)文本框

 <div id="app">
     <!-- 视图层 -->
     <input type="text" v-model="msg">
     <h1>{{ msg }}</h1>
</div>
<script>
    new Vue({
        el:"#app",
        data:{//model 数据模型层
            msg:'hello'
        }
    })
</script>

(2)文本域

<textarea cols="30" rows="10">{{ msg }}</textarea>

(3)复选框

①布尔值

<div id="app">
	<input type="checkbox" v-model="isagree">是否同意协议{{ isagree }}
</div>
<script>
	 new Vue({
        el:"#app",
        data:{
            isagree:false
        }
    })
</script>

②数组

<div id="app">
	<div>
        <label>兴趣爱好:</label>
        <input type="checkbox" v-model="hobbys" value="打游戏">打游戏
        <input type="checkbox" v-model="hobbys" value="看电影">看电影
        <input type="checkbox" v-model="hobbys" value="逛吃">逛吃
        <input type="checkbox" v-model="hobbys" value="打豆豆">打豆豆
        <span>已选择:{{ hobbys }}</span>
    </div>
</div>
<script>
	 new Vue({
        el:"#app",
        data:{
            hobbys:[]
        }
    })
</script>

当v-model用于复选框时,需要设置value属性

(4)单选框

<div id="app">
    <input type="radio" v-model="status" value="1">正常
    <input type="radio" v-model="status" value="2">禁用
</div>
<script>
	 new Vue({
        el:"#app",
        data:{
            status:1
        }
    })
</script>

当v-model用于单选框时,需要设置value属性

(5)下拉菜单

<div id="app">
    <select @change="change" v-model="kemu">
        <option value="">--请选择--</option>
        <option value="1">web前端</option>
        <option value="2">java开发</option>
        <option value="3">ui设计</option>
    </select>
</div>
<script>
	 new Vue({
        el:"#app",
        data:{
            kemu:1
        }
    })
</script>

三、数据变化后,页面不重新渲染

  • 对象类型的解决方法:
    * 添加用Vue中的 $ set方法 三个参数 第一个参数是要追加在哪 第二个是键名 第三个是键值
    * 删除用Vue中的$delete方法 两个参数 第一个参数是要操作的元素 第二个是键名

  • 数组类型的解决方法:

  •      * push、unshift、pop、shift、splice
    
  • 二者都可以用的:
    * Vue中的$forceUpdate方法 强制更新 无论什么数据类型 只要有他 页面都会重新渲染
    附加小提示: input取消历史提示 autocomplete=“off” css样式

总结

提示:这里对文章进行总结:
例如:以上是今天小编的部分总结,不是很专业,望各位海涵,本文也仅仅是简单的介绍了vue的基础语法,有不足的地方欢迎大家来补充,接下来我会不定时的发一些小心得,如果转载本文,请标明原处!

### Vue.js 中删除数据后的组件重新渲染机制 在 Vue.js 中,当状态发生变化时,框架会自动检测到这些变化并通过其响应式系统触发视图更新。对于删除操作而言,只要确保被监听的数据发生了变更,Vue 就能识别这种改变并执行相应的 DOM 更新逻辑。 #### 使用 `v-if` 控制元素显示隐藏 为了实现基于条件的渲染,在模板内可以采用 `v-if` 指令来决定是否应该呈现某个部分的内容: ```html <div v-if="items.length"> <!-- 只有 items 数组为空时才会渲染此 div --> </div> ``` 一旦数组中的项目被移除导致长度变为零,则该节点及其子树将再存在于文档流中[^1]。 #### 利用计算属性追踪集合大小 通过定义一个依赖于目标列表的计算属性,可以在每次修改原始数据集之后即时获取最新的计数值,并以此为基础控制其他 UI 元素的状态: ```javascript computed: { hasItems() { return this.items && this.items.length > 0; } } ``` 这样做的好处是可以简化模板表达式的复杂度,同时保持良好的性能表现[^2]。 #### 调整侦听器以处理特定事件 如果希望针对某些特殊场景下的变动做出反应,比如仅当最后一个项被清除时才采取行动,那么可以通过设置 watcher 来捕获这样的时机: ```javascript watch: { items(newValue, oldValue) { if (!newValue || newValue.length === 0) { console.log('All items have been removed'); // 执行额外的操作... } } } ``` 这种方法允许开发者编写更为精细的行为逻辑,而无需担心频繁必要的重绘开销[^3]。 #### 强制刷新实例 虽然通常情况下需要手动干预这一过程,但在极少数情形下可能确实有必要强制让整个应用或某一部分经历一次完整的重建周期。此时可借助 `$forceUpdate()` 方法达成目的: ```javascript methods: { removeItem(index) { this.items.splice(index, 1); // 如果确认当前版本号已过期且需立即反映更改, // 或者出于调试需求验证视图同步情况的话, // 下面这行代码或许有用: this.$forceUpdate(); } } ``` 过需要注意的是,过度使用此类手段可能会削弱应用程序的整体效率,因此建议谨慎对待[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值