vue.js的双向绑定详解

本文主要和大家分享vue.js的双向绑定详解,啥是双向绑定,首先我们都理解单向绑定吧,就是加一个监听器,在一个被触发的时候另外一个同时被触发。

加个图来看看:

vue.js的双向绑定详解

我在下方文本框输入内容的时候,上面的也改变了。这是一方,其次,我可以在代码里修改相关内容,这是另外一方。

后者好做,前者不好弄。

而vue.js帮我们做到了这一点。

立即学习“前端免费学习笔记(深入)”;

vue.js的双向绑定详解

如果各位客官想看看他的具体原理是啥样的话:

这儿有链接:https://www.cnblogs.com/kidney/p/6052935.html?utm_source=gold_browser_extension

之后再分享一篇转载的vue相关知识:

           

                                                                                           Vuejs——(1)入门(单向绑定、双向绑定、列表渲染、响应函数)                                                

2016年09月01日 15:01:14        15717人阅读         评论(0)                    收藏                                    举报                            

vue.js的双向绑定详解分类:            

                      Vue.js(85)                                        vue.js的双向绑定详解

目录(?)[+]

目录(?)[-]

一单向绑定

二双向绑定

三函数返回值

四渲染列表

五处理用户输入

六多功能

七标签和API总结1

参照链接:

http://cn.vuejs.org/guide/index.html

【起步】部分

本文是在其基础上进行补全和更详细的探寻

嗯,根据朋友的建议,我改投vue阵营了

 

(一)单向绑定

      {{ message }}  

     new Vue({ el: '#app', data: { message: 'Hello Vue.js!' } })

登录后复制

①el应该表示绑定的意思,绑定id=app这个标签

也可以改为以下这样:

      {{ message }}  

登录后复制

el: ‘.app’,  

一样有效。

 

但如果是多个的话,只对第一个有效

      {{ message }}  

  

      {{ message }}  

登录后复制

Hello Vue.js!

{{ message }}

 

②data里的message变量,表示{{message}的值

 

 

(二)双向绑定

      {{ message }}      
        

   new Vue({ el: '#app', data: { message: 'Hello Vue.js!' } })

登录后复制

效果是:

①input输入框里有初始值,值是data里的message属性的值;

 

②修改输入框的值可以影响外面的值;

 

(三)函数返回值

      {{ message() }}      
        

   new Vue({ el: '#app', data: { message: function () { return 'Hello Vue.js!'; } } })

登录后复制

效果:

①输出值也是message的返回值;

②缺点:失去双向绑定!

(四)渲染列表

      

登录后复制                        {{list.text}}                     new Vue({ el: '#app', data: { todos: [ {text: “1st”}, {text: “2nd”}, {text: “3rd”} ] } })

 

v-for里的list,类似for in里面的i,

个人认为,

①可以把list in todos,理解为for list in todos

②然后把下一行的list.text理解为 todos[list].text

 

然后这个v-for标签在哪里,就是以他为单位进行多次复制。

 

(五)处理用户输入

                          

   new Vue({ el: '#app', data: { message: 1 }, methods: { add: function () { this.message++; //这步要加this才能正确获取到值 }, minus: function () { this.message--; }, reset: function () { this.message = 0; } } })

登录后复制

效果:

①对输入框的值,点击一次add按钮,则值+1;

②如果不能加,则像正常表达式加错了那样返回结果,例如NaN;

③data里的message的值,是初始值;

④methods里是函数集合,他们之间用逗号分隔;

⑤获取值的时候,要加上this,例如this.message获取的是message的值。

 

(六)多功能

            

登录后复制                        {{val.val}}                                   new Vue({ el: '#app', data: { val: “1”, values: [] }, methods: { addToList: function () { var val = parseInt(this.val.trim()); //注意,因为当上面的val是字符串类型的时候,才能用trim(),如果是数字类型,则用this.val if (val) { this.values.push({val: val}); } this.val = String(val + 1); }, removeList: function (index) { this.values.splice(index, 1); } } })

效果:

①初始输入框内值为1;

②在输入框内按回车键,则会将输入框的内容转为数字,并添加到一个列表里,该列表里转换后的数字和一个删除按钮,并且输入框内的值,变为转为数字后的值加一。

如图:

vue.js的双向绑定详解

③他的添加,利用的是双向绑定,将输入的值push到data里面的values这个数组之种,然后利用渲染列表的效果,输出多行值。

 

④在button标签里,函数的参数名给了一个参数,是该行索引,参数名是$index

 

⑤标签里,触发的函数的函数名,可以加括号,也可以不加括号,实测似乎是没有影响的。

 

 

(七)标签和API总结(1)

① {{ 变量名 }}

表示绑定的变量,调用时需要用this.变量名

 

② v-model=”变量”

双向绑定使用,如果input里不加任何type就是文本,如果加type就是type,例如:

  

登录后复制{{DATE}}

就会将日期类型的输入框的值,和li标签显示的内容绑定在一起。

 

③ v-on:click=”函数名”

点击时触发该函数,可加()也可以不加,

$index作为参数表示索引,索引值从0开始。

 

 

④ v-for

双向绑定的在数组内容更新后,会实时更新,v-model也是;

类似for in语句,被多次使用的是

 

⑤ v-on:事件

即触发的事件,有click(点击),keypress(按键按下)

事件后面可以跟更具体的,例如keypress.enter是回车,keypress.space是空格等

更多的需要之查看

 

⑥ new vue

通过new一个vue的实例,然后传一个对象作为参数给这个实例;

其中:

el 表示绑定的模板(只会匹配到绑定的第一个)

data 表示数据,可以直接被取用,例如用在v-model或者是{{变量名}}

methods 表示方法

 

 函数内部调用变量

通过this.变量名,例如:

data: {      val: "1",      values: []  },  methods: {      addToList: function () {          console.log(this.val);

登录后复制

这里的this.val就是上面的data.val,也是html里的{{val}},也是v-model=”val”,但不

for=”val in values”>  

    {{val.val}}  

    “button” value=”删除” v-on:click=”removeList($index)”/>  

  

 

里面的val.val,至于原因,个人认为是这里的val处于v-for的作用域内,因此val in values 里的val其在作用域链中的优先级更高。

相关推荐:

js简单双向绑定案例代码

实例讲解jQuery实现html双向绑定功能

Vue.js双向绑定操作技巧

以上就是vue.js的双向绑定详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2780097.html

(0)
上一篇 2025年3月8日 15:55:34
下一篇 2025年3月8日 15:55:44

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS实现精确加减乘除的实例

    项目中要使用 js 实现自动计算的功能,进行一些浮点数运算时,计算结果却是一长串的值,本文主要和大家分享js实现精确加减乘除的实例,希望能帮助到大家。 具体代码如下: //加法函数 2 function accAdd(arg1, arg2)…

    编程技术 2025年3月8日
    200
  • JS实现密码弱中强显示

    本文主要和大家分享JS实现密码弱中强显示,主要以代码的方式和大家分享,希望能帮助到大家。 nbsp;html>                 onload = function () { var tds = document.get…

    编程技术 2025年3月8日
    200
  • 动态加载、移除js/css文件的方法

    本文简单介绍动态加载、移除、替换js/css文件 。有时候我们在写前端的时候,会有出现需要动态加载一些东如css js 这样能减轻用户加载负担,从而提高响应效率。下面贴出代码。  //动态加载一个js/css文件function loadj…

    编程技术 2025年3月8日
    200
  • js随机取4个数不重复数字的方法

    本文主要和大家分享js随机取4个数不重复数字的方法,范围是从0到9,希望能帮助到大家。 html    登录后复制 script function f1(){var arr_4=new Array()function getRandom(m…

    编程技术 2025年3月8日
    200
  • JS超链接实现动态显示图片

    本文主要和大家分享JS超链接实现动态显示图片,主要以代码的形式和大家分享,希望能帮助到大家。 nbsp;html>         onload = function () { var al = document.getElement…

    编程技术 2025年3月8日
    200
  • 详解JS原型和原型链(一)

    这次给大家带来详解js原型和原型链以及注意事项有哪些,下面就是实战案例,一起来看一下。 一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object 、Function 是 JS …

    编程技术 2025年3月8日
    200
  • 详解JS原型和原型链(三)

    这次接着上篇跟小编一起来看看js原型和原型链以及注意事项有哪些,下面就是实战案例,一起来看一下。 七. 函数对象 (复习一下前面的知识点) 所有函数对象的proto都指向Function.prototype,它是一个空函数(Empty fu…

    2025年3月8日 编程技术
    200
  • 浅析JavaScript中__proto__与prototype的关系

    这次给大家浅析javascript中__proto__与prototype的关系,下面就是实战案例,一起跟随小编来看一下。 一、所有构造器/函数的__proto__都指向Function.prototype,它是一个空函数(Empty fu…

    编程技术 2025年3月8日
    200
  • js递归原理解析

    本文主要和大家讲述关于JS的函数递归,主要从“变量+函数”和“函数+变量”两个方面说明解释,希望能帮助到大家。 相对简单,直接上代码。 一、知识说明 function fun(){    // 自己调用自己,称为递归调用    fun();…

    编程技术 2025年3月8日
    200
  • js抛物线简单讲解

    本文主要和大家分享js抛物线简单讲解,希望能帮助到大家。 nbsp;html>        Document     * { margin: 0; padding: 0; } .box { width: 0px; height: 0…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论