阅读 1006

Vue的常用指令详细解析你知道吗?

总结一笔

1.自定义事件的事件名字大小写问题

跟组件和 prop 不同,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称。举个例子,如果触发一个 camelCase 名字的事件:

this.$emit('myEvent')
复制代码

则监听这个名字的 kebab-case 版本是不会有任何效果的:

<my-component v-on:my-event="doSomething"></my-component>
复制代码

跟组件和 prop 不同,事件名不会被用作一个 JavaScript 变量名或属性名,所以就没有理由使用 camelCase 或 PascalCase 了。并且 v-on 事件监听器在 DOM 模板中会被自动转换为全小写 (因为 HTML 是大小写不敏感的),所以 v-on:myEvent 将会变成 v-on:myevent——导致 myEvent 不可能被监听到。

因此,推荐你始终使用 kebab-case 的事件名。

2. vue几种常用的指令

v-bind: 行间属性绑定 或者用冒号 :

v-bind:title 鼠标移上的显示

v-bind:src 绑定图片路径

v-bind:html 绑定HTML文本和标签

v-bind:text 绑定文本 (字符串)

v-bind:class 绑定类样式(数组)

v-bind:style 动态绑定样式 (对象)

v-for: 1.x 和 2.x是不一样的

v-for="i in json"

v-for="(key, value) in json"

3. vue中 key 值的作用?

  • 当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。key的作用主要是为了高效的更新虚拟DOM。

4. 描述vuex

vuex用于组件之间共享数据 以store作为容器 state:用来存储共享数据, 数据池 getters:用来获取处理过后的数据,具有缓存的作用 mutations: 同步提交状态的更改 actions:异步提交状态的更改 module:当状态管理多了, 使用module来划分多个模块

5. $watch

监听对象中的data里面的数据的变化 var vue = new Vue ( { el:'#root', data:{ a:"", b:"" } }); 开启监控:, 返回值是停止监控的函数 var watchA = vue.$watch('a', function(newValue, oldValue){ vue.c = vue.a // 这样a改变就会执行函数 }); 停止监控: watchA()

6. 全局组件

组件输出 -> 打包(给包组件命名,作为标签名使用) -> 输出打包后的模块 -> Vue.use(模块名) -> <全局组件名字 />

打包组件的js文件

import cp1 from './cp1.vue'
import cp1 from './cp1.vue'
let package = {
    install(vue){
        vue.component('cp1', cp1)
        vue.component('cp2', cp2)
    }
}
export default package;
复制代码
复制代码

main.js

import package from "globalCp"
Vue.use(package)
复制代码
复制代码

其他vue文件直接使用即可

<cp1></cp1>
复制代码
复制代码

7.单选下拉框

1、通过select定义下拉框,通过option定义选项,,默认是一个单选下拉框
2、可以通过v-model指令,实现数据双向绑定,V-model指令绑定给select元素,由于单选框默认只能选中一个值,因3、此我们绑定一个字符串Option选项的值,没有value属性,是内容值,有value属性,就是value
注:1.0 版本中selected优先级高于绑定的数据; 2.0 版本中selected优先级低于绑定的

```javascript
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">
        <select v-model="colors">
            <option value="isRed">red</option>
            <option value="isGreen">green</option>
            <option value="isBlue">blue</option>
        </select>
        <h1>查看结果 {{colors}}</h1>
    </div>
    <script type="text/javascript" src="vue.js"></script>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                colors: 'isGreen'
            }
        })
    </script>
</body>
</html>

复制代码

8.多选下拉框

1、将单选下拉框变成多选下拉框,只需要给select元素添加multiple属性
2、此时下拉框的值将变成给一个数组了,每一个成员代表一个选中的选项
3、选项的值:没有value属性,就是内容值、有value属性,就是value值
注:1.0 版本中selected优先级高于绑定的数据; 2.0 版本中selected优先级低于绑定的数据、

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">
        <select v-model="colors" multiple>
            <option value="isRed">red</option>
            <option value="isGreen">green</option>
            <option value="isBlue">blue</option>
        </select>
        <h1>查看结果 {{colors}}</h1>
    </div>
    <script type="text/javascript" src="vue.js"></script>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                colors: ['isRed','isGreen']
            }
        })
    </script>
</body>
</html>

复制代码
文章分类
前端
文章标签