Vue基础-双向绑定:从 html 到 模板 到 渲染函数
Vue 测试版本:Vue.js v2.5.13
在 Vue 中,可以利用 v-model 语法糖实现数据的双向绑定,例如:
- <div id="app">
- <input
- type="text"
- v-model="id"
- placeholder="please enter your id"
- />
- <p>your id is: {{ id | formatId }}</p>
- </div>
- window.onload = function() {
- Vue.filter('formatId', function(v) {
- return v.length < 10 && v.length > 0 ? v.padStart(10, '0') : v;
- });
- new Vue({
- el: '#app',
- data: {
- id: ''
- }
- });
- };
但是有时,我们可能希望用 模板 实现,那么情况就是这样:
- <div id="app">
- <my-ele :id="id"></my-ele>
- </div>
- window.onload = function() {
- Vue.component('my-ele', {
- template: `
- <div>
- <input type="text" v-model="id"/>
- <p>you id: {{id | formatId}}</p>
- </div>
- `,
- props: ['id']
- });
- Vue.filter('formatId', function(v) {
- return v.length < 10 && v.length > 0 ? v.padStart(10, '0') : v;
- });
- new Vue({
- el: '#app',
- data: {
- id: ''
- }
- });
- };
目前为止,都是比较简单的,问题就在于,有时,我们还需要用 render() 函数来实现:
- <div id="app">
- <my-ele
- :val-par="id"
- @input-par="id=arguments[0]"
- ></my-ele>
- </div>
- window.onload = function() {
- Vue.component('my-ele', {
- render(createElement) {
- let self = this;
- let input = createElement('input', {
- domProps: {
- type: 'text',
- placeholder:'please enter your id',
- value: this.valPar,
- },
- on: {
- input(e) {
- self.$emit('input-par', e.target.value);
- }
- }
- });
- let p = createElement('p', {
- props: {
- id: this.valPar
- }
- }, 'your id is: '+this.formatId(this.valPar));
- return createElement('div', [input, p]);
- },
- props: ['valPar'],
- methods: {
- formatId(v) {
- return v.length < 10 && v.length > 0 ? v.padStart(10, '0') : v;
- }
- }
- });
- new Vue({
- el: '#app',
- data: {
- id: ''
- }
- });
- };
主要注意两点:
- value 的双向绑定在设置在 domProps 而不是 props
- 过滤器自己实现了个,并不能用 Vue.filter
参考文档:
https://cn.vuejs.org/v2/guide/render-function.html#深入-data-对象
Vue基础-双向绑定:从 html 到 模板 到 渲染函数的更多相关文章
- Vue.js双向绑定的实现原理和模板引擎实现原理(##########################################)
Vue.js双向绑定的实现原理 解析 神奇的 Object.defineProperty 这个方法了不起啊..vue.js和avalon.js 都是通过它实现双向绑定的..而且Object.obser ...
- vue的双向绑定原理及实现
前言 使用vue也好有一段时间了,虽然对其双向绑定原理也有了解个大概,但也没好好探究下其原理实现,所以这次特意花了几晚时间查阅资料和阅读相关源码,自己也实现一个简单版vue的双向绑定版本,先上个成果图 ...
- 西安电话面试:谈谈Vue数据双向绑定原理,看看你的回答能打几分
最近我参加了一次来自西安的电话面试(第二轮,技术面),是大厂还是小作坊我在这里按下不表,先来说说这次电面给我留下印象较深的几道面试题,这次先来谈谈Vue的数据双向绑定原理. 情景再现: 当我手机铃声响 ...
- Vue数据双向绑定原理及简单实现
嘿,Goodgirl and GoodBoy,点进来了就看完点个赞再go. Vue这个框架就不简单介绍了,它最大的特性就是数据的双向绑定以及虚拟dom.核心就是用数据来驱动视图层的改变.先看一段代码. ...
- vue数据双向绑定
Vue的双向绑定是通过数据劫持结合发布-订阅者模式实现的,即通过Object.defineProperty监听各个属性的setter,然后通知订阅者属性发生变化,触发相应的回调. 整个过程分为以下几步 ...
- 【学习笔记】剖析MVVM框架,简单实现Vue数据双向绑定
前言: 学习前端也有半年多了,个人的学习欲望还比较强烈,很喜欢那种新知识在自己的演练下一点点实现的过程.最近一直在学vue框架,像网上大佬说的,入门容易深究难.不管是跟着开发文档学还是视频教程,按步骤 ...
- vue数据双向绑定原理
vue的数据双向绑定的小例子: .html <!DOCTYPE html> <html> <head> <meta charset=utf-> < ...
- 揭密 Vue 的双向绑定
Vue 中需要输入什么内容的时候,自然会想到使用 <input v-model="xxx" /> 的方式来实现双向绑定.下面是一个最简单的示例 剖析Vue原理& ...
- vue 之 双向绑定原理
一.实现双向绑定 详细版: 前端MVVM实现双向数据绑定的做法大致有如下三种: 1.发布者-订阅者模式(backbone.js) 思路:使用自定义的data属性在HTML代码中指明绑定.所有绑定起来的 ...
随机推荐
- 02、Windows Phone 套接字(Socket)实战之服务器端设计
这里主要写 PC 服务器端的逻辑,UI 使用的是 WPF,因为 WPF 比普通的 WinForm 的流式布局 更容易控制,而且比 WinForm 美观一些,显示截图: 一.页面 UI MainWind ...
- java学习之局部变量以及全局变量
全局变量 什么是全局变量? 全局变量就好比一个容器或者一个公用的东西一样,就类似外面公共场所的凳子一样,大家都可以使用这个凳子. 和他相反的局部变量是啥子东东呢? 局部变量就是局部的东西,如果全局变量 ...
- 裸的lcs
最长公共子串,裸的复杂度N^2 #include<bits/stdc++.h> using namespace std; ][]; int main() { ]; ]; scanf(&qu ...
- IIS 与 Apache共存
http://support.microsoft.com/kb/813368 http://www.blueidea.com/computer/system/2006/3585.asp 操作其实也很简 ...
- js中的target与currentTarget的区别<转>
关于js中target与currentTarget的区别的关键在于他们所处在的事件流的阶段是不一样的,target处于事件流的目标阶段,currentTarget处理事件流的捕获.处于目标阶段和冒泡阶 ...
- mysql 存储过程调用
CALL 存储过程名('参数值1',‘参数值2',’参数值3')
- 三种CSS方法实现loadingh点点点的效果
我们在提交数据的时候,在开始提交数据与数据提交成功之间会有一段时间间隔,为了有更好的用户体验,我们可以在这个时间段添加一个那处点点点的动画,如下图所示: 汇总了一下实现这种效果主要有三种方法: 第一种 ...
- 查看win10的激活信息和版本号
在命令提示符里输入 cscript /nologo %Windir%\System32\slmgr.vbs /dli&&cscript /nologo %Windir%\System3 ...
- SSIS 自测题-控制流控件类
说明:以下是自己的理解答案,不是标准的答案,如有不妥烦请指出. 有些题目暂时没有答案,有知道的请留言,互相学习,一起进步. 62.描述一下 Execute SQL Task 的作用,在 ...
- Differential Geometry之第八章常Gauss曲率曲面
第八章.常Gauss曲率曲面 1.常正Gauss曲率曲面 2.常负Gauss曲率曲面与Sine-Gordon方程 3.Hilbert定理 4.Backlund变换 4.1.线汇与焦曲面 4.2.Bac ...