Vue基本用法

Vue基本用法,第1张

Vue:渐进式javascript框架

声明式渲染-->组件系统-->客户端路由-->集中状态管理-->项目构建

Vue的基本使用

Vue的两种挂载方式:

模板语法:

1插值表达式

存在闪动问题:快速刷新浏览器时,有时会显示{{xxx}}内容,然后替换为要显示的值解决的办法-->指令(先隐藏,替换好值之后再显示)

2指令(指令的本身就是自定义属性)

以v-开头 例如v-cloak

html:

js

效果:

使用v-cloak

html:

css:

效果:

在简单项目中,使用 v-cloak 指令是解决屏幕闪动的好方法。但在大型、工程化的项目中(webpack、vue-router)只有一个空的 div 元素,元素中的内容是通过路由挂载来实现的,这时我们就不需要用到 v-cloak 指令咯。

双向数据绑定:v-model

2MVVM私享

M(model)

V(view)

VM(view-model)

mvc,mvp和mvvm的区别:

>})//使用v-html指令输出data中的html元素

<div v-html="my_html"></div>

使用场景,牌匾文字上的公司名要根据字数多少自动变大变小,要先拿到文字内容

html:

<div class="head-h1" ref="company_name" >{{datascompany_name}}</div>

js:当页面刚加载完,通过接口获取{{datascompany_name}}的值,要对里面的值编辑时

this$refscompany_name  拿不到值

解决办法:

接口响应完,this$nextTick()方法里面 *** 作DOM,它才能接收到DOM更新的值

官方解释:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

this$nextTick(_=>{

        。。。。

            this$refs company_name

})

在项目中遇到解析html,发现v-html并不满足复杂的渲染,就使用jq来处理

1v-html 处理简单的标签

如:text="<p>vue转换</p>"

html中解析:

<p v-html="text">{{text}}</p>

2返回标签中还有img、a标签,使用v-html就不会转换方法如下:

使用jquery处理:

1在标签定义class

<div class="descript"></div>

2安装jq

npm install jquery --save

3在使用的地方引入

import $ from 'jquery'

async loadProductDetail(cData) {

const { data } = await getProductDetail(cData)

thisdescript = datadatasku //接口返回数据赋值

thisloadhtml() //调用方法

},

loadhtml() {

('descript')html(thisdescript) //赋值

const srcdescript = ('descript')find('img') //找到当前所有的a标签、img标签

for (let i = 0; i < srcdescriptlength; i++) { //遍历

let a = srcdescripteq(i)attr('href') //找到a标签的href属性

let b = evalseq(i)attr('src') //找到img标签的src属性

//this url + a) //赋值

srcdescripteq(i)attr('src', this$url + b) //赋值

//如果接口返回有就不添加:

// srcdescripteq(i)attr('href', a) //赋值

//srcdescripteq(i)attr('src', b) //赋值

}

}

根据需求想要一个可以根据文字内容撑开高度,同时延伸背景图(因为我想要一个虚线的效果),textarea无法自适应,用div的可编辑效果contenteditable = true来实现,遇到了几个问题。

1、设置div的初始化高度min-height: 700px;

2、div的内容需要通过@input来绑定etargettextContent

3、可编辑的div,光标会在输入完成时跳到最前,解决方式是通过range对象的moveStart()函数

第步创建静态HTML5页面vmodelhtml并引入vueminjs文件

第二步body元素内插入div并div引入input输入框label标签

第三步调用初始化Vuejs并给输入框赋值

第四步预览该静态页面页面显示默认显示值

第五步减少输入框字符发现面内容跟着减少

第六步添加输入框字符面内容随增加展示数据双向绑定

可编辑div可能很简单 contenteditable="true" 就能实现了

但是,,,输入一个字的时候,焦点会自动跳到文本开头,很烦的有木有

在网上看见一个大神写的,引用过来,很久了,忘记了出处

将可编辑div单独设置成一个组件

子组件中

<template>

  <div class="edit" placeholder="11"

      v-html="innerText"

      :contenteditable="canEdit"

      @focus="isLocked =true"

      @blur="isLocked =false"

      @input="changeText">

</template>

watch: {

'value'(){

if (!thisisLocked && !thisinnerText) {

thisinnerText =thisvalue;

    }

}

},

methods: {

changeText(){

this$emit('input', this$elinnerHTML);

  }

},

父组件中只要 v-model='你想要绑定的数据'

对vue不熟悉,,当然这位大神也说看下官方文档v-model这一块

大致是如果父组件的v-model会首先绑定子组件的emit的input方法

需要有一个可拖拽的div元素。

1、该div元素应设置draggable=true属性来标识该元素可拖拽。

2、为该div元素添加一个v-on:dragstart监听事件,该事件函数接收一个event参数。

3、其中包含所拖动的div元素和其他数据,该事件函数可以用来获取拖拽的元素的信息,并将其存入dataTransfer对象中,以便在放置时提取这些数据。

4、为要放置的元素添加一个v-on:drop监听事件,该事件函数会接收一个event参数,在该事件中,可使用dataTransfergetData()方法取出之前传入的数据。

5、将该数据写入下拉框中即可完成拖拽到下拉框的功能。

以上就是关于Vue基本用法全部的内容,包括:Vue基本用法、vue.js获取到的数据中所含的html元素如何按html正常显示、vue 无法获取DOM的innerHtml等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9715488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存