项目地址:https://github.com/pangyongsheng/mvvm

1、 指令

  • vm-bind 单选数据绑定- 将数据显示到标签视图
  • vm-model : 双向数据绑定
  • vm-show : 是否显示
  • vm-show : 是否显示
  • vm-if/v-else : 条件判断
  • vm-click:绑定事件
  • vm-src:标签资源绑定
  • vm-attr="key:value":html标签属性绑定
  • {{x}}双花括号数据绑定
  • vm-bind="css属性:值" bind绑定css属性

2、示例dome(详细见dist/index.html)

(1)js

new viewModel({
el:'#wrap', //@绑定节点
data:{ //@数据
title:"双向绑定使用dome",
count:0,
...
},
methods:{ //@方法-事件调用(this指向data)
increment:function(a){
this.count+=parseInt(a);
},
...
},
create:function(init){ //@业务逻辑(this指向data)
var _this=this;
setTimeout(function(){
_this.count=5;
init();
},2000) }
})

(2)html

<div id="wrap"  vm-hidden>
<h1 style="text-align: center;">双向绑定使用dome</h1>
<br>
<h3>1、vm-bind 单项绑定</h3>
<p>在标签中添加vm-bind="数据"属性,标签中内容显示绑定数据:如</p>
<p vm-bind="title"></p>
<br> <h3>2、vm-model双向绑定</h3>
<p>在input中添加vm-model="数据"属性,实现视图与数据同步,如下:</p>
<input type="text" vm-model="text">
<span vm-bind="text"></span>
<br> <h3>3、vm-click添加点击事件,如:</h3>
<p>在标签中添加vm-click="方法",点击元素调用方法</p>
<button vm-click="increment(1)">点我加一</button>
<span vm-bind="count"></span>
<br> <h3>4、双花括号绑定,如:</h3>
<p>使用{{数据}}绑定数据到界面</p>
<p>{{word}}</p>
<br> <h3>5、vm-show实现元素的显示和隐藏</h3>
<p>在元素中添加vm-show属性,根据数据的真假实现元素的显示隐藏,如:</p>
<button vm-bind="sh" vm-click="toChange"></button>
<div vm-show="isshow">xxxxxxxxxx</div> <h3>6、vm-for实现列表循环显示</h3>
<p>在元素中添加vm-show="数据"属性,该标签会根据数据循环显示,如:</p>
<ul>
<li vm-for="li in list">
<span>{{li.name}}</span>
<span>{{li.sex}}</span>
</li>
</ul>
<br> <h3>6、vm-src绑定元素src</h3>
<p>在元素中添加vm-src="数据"属性,该标签会根据数据循环显示,如:</p>
<img vm-src="imgSrc" alt="">
<br> <h3>7、vm-attr绑定元素属性</h3>
<p>在元素中添加vm-attr="属性名:数据"属性,该标签会根据数据循环显示,如:</p>
<p vm-attr="id:idName">xxxxxxx</p>
<br> <h3>8、vm-bind绑定css样式</h3>
<p>在元素中添加vm-bind="style属性:数据"属性,该标签会根据数据循环显示,如:</p>
<p vm-bind="color:col">我是红色的</p>
<br> <!-- -->
<hr>
<p>上述指令和结合在一起使用</p>
</div>

3、 目录结构


mvvm

  • src
     vm.js--------创建VM对象,初始化数据
     compile.js---dom编译模块
     directive.js--指令模块
     convert.js---数据劫持模块
     index.html--示例dome
  • dist
     vm.js--------打包压缩后的js
     index.html--示例dome

仿vue实现简易版mvvm双向绑定的更多相关文章

  1. 【Maui正式版】创建可跨平台的Maui程序,以及有关依赖注入、MVVM双向绑定的实现和演示

    前言:Maui终于在昨天(2022年8月9日)推送出来了.今儿就迫不及待来把玩一下先. A.我本地已有VS2022,不过版本比较老,此处选择更新.工具 -> 获取功能和更新里面,可以获取到新版本 ...

  2. VUE JS 使用组件实现双向绑定

    1.VUE 前端简单介绍  VUE JS是一个简洁的双向数据绑定框架,他的性能超过ANGULARJS,原因是实现的机制和ANGULARJS 不同,他在初始化时对数据增加了get和set方法,在数据se ...

  3. C#使用Xamarin开发可移植移动应用(3.进阶篇MVVM双向绑定和命令绑定)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...

  4. C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...

  5. vue iview render里面 没有双向绑定 renderHeader 要序列化 反序列 一下

    vue iview render里面 没有双向绑定 renderHeader 要序列化 反序列 一下 renderHeader: (h, params) => { return [ h('Rad ...

  6. vue 数组和对象的双向绑定不响应问题

    对象和数组的数据类型是对象,对象是对象这个是毫无疑问的.数组可以把索引当成键名,把索引对应的元素当成该键名的键值. vue对象有些操作不能双向绑定的原因是vue未改变原对象,以及未给新增属性增加set ...

  7. 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入

    前言:在C/S架构上,WPF无疑已经是"桌面一霸"了.在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用.但是WPF也有很多年的历史了,并且基于MVVM ...

  8. vue Object.defineProperty Proxy 数据双向绑定

    Object.defineProperty 虽然已经能够实现双向绑定了,但是他还是有缺陷的. 只能对属性进行数据劫持,所以需要深度遍历整个对象 对于数组不能监听到数据的变化 虽然 Vue 中确实能检测 ...

  9. [vue]通过watch实现数据双向绑定

    modal:单向绑定 <head> <meta charset="UTF-8"> <title>test</title> <s ...

随机推荐

  1. IO多路复用,同步,异步,阻塞和非阻塞 区别

    一.什么是socket?什么是I/O操作? 我们都知道unix(like)世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流而已,不管socket,还是FIFO.管道.终端,对我们来说,一切都是 ...

  2. 微信 Tinker 的一切都在这里,包括源码

    最近半年以来,Android热补丁技术热潮继续爆发,各大公司相继推出自己的开源框架.Tinker在最近也顺利完成了公司的审核,并非常荣幸的成为github.com/Tencent上第一个正式公开的项目 ...

  3. Linux显示工作路径

    Linux显示工作路径 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ pwd /home/youhaidong

  4. Day25 前端自学日记——入坑记

    一 学习契机 今年是走出校门的第一个年头,进入了一家还算不错的公司,领着一份还算不错的薪水,在外人眼中,似乎这样已经不错了,只要我努力好好做,前程一片光明.可事实真是这样吗?两份实习经历都指向我应该从 ...

  5. Ajax跨域解决实例

    HTML 在本例中我们跨域http://www.sucaihuo.com/jquery/demo/43/jsonp.php?callback=.你也可以试试其他域名.下面表单中,我们提交后的结果反馈到 ...

  6. Carries SCU - 4437

    Carries frog has nn integers a1,a2,-,ana1,a2,-,an, and she wants to add them pairwise. Unfortunately ...

  7. C#图解教程 第七章 类和继承

    类和继承 类继承访问继承的成员所有类都派生自object类屏蔽基类的成员基类访问使用基类的引用 虚方法和覆写方法覆写标记为override的方法覆盖其他成员类型 构造函数的执行 构造函数初始化语句类访 ...

  8. 初识SSO与JWT

    以前在学校做项目的时候,登录注销,权限验证这些事情,都是交给框架来做的,每次都是把这个架子拿到项目中去,也没有真正思考过它的过程,总觉的这些都是十分简单的逻辑. 然而来公司工作之后,慢慢觉得登录和权限 ...

  9. 【小白学爬虫连载(10)】–如何用Python实现模拟登陆网站

    Python如何实现模拟登陆爬取Python实现模拟登陆的方式简单来说有三种:一.采用post请求提交表单的方式实现.二.利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入c ...

  10. 【BZOJ1146】网络管理(整体二分)

    [BZOJ1146]网络管理(整体二分) 题面 良心洛谷,有BZOJ权限题 题解 要看树套树的戳这里 毕竟是:智商不够数据结构来补 所以, 我们来当一回智商够的选手 听说主席树的题目大部分都可以整体二 ...