仿vue实现简易版mvvm双向绑定
项目地址: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双向绑定的更多相关文章
- 【Maui正式版】创建可跨平台的Maui程序,以及有关依赖注入、MVVM双向绑定的实现和演示
前言:Maui终于在昨天(2022年8月9日)推送出来了.今儿就迫不及待来把玩一下先. A.我本地已有VS2022,不过版本比较老,此处选择更新.工具 -> 获取功能和更新里面,可以获取到新版本 ...
- VUE JS 使用组件实现双向绑定
1.VUE 前端简单介绍 VUE JS是一个简洁的双向数据绑定框架,他的性能超过ANGULARJS,原因是实现的机制和ANGULARJS 不同,他在初始化时对数据增加了get和set方法,在数据se ...
- C#使用Xamarin开发可移植移动应用(3.进阶篇MVVM双向绑定和命令绑定)附源码
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...
- C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...
- vue iview render里面 没有双向绑定 renderHeader 要序列化 反序列 一下
vue iview render里面 没有双向绑定 renderHeader 要序列化 反序列 一下 renderHeader: (h, params) => { return [ h('Rad ...
- vue 数组和对象的双向绑定不响应问题
对象和数组的数据类型是对象,对象是对象这个是毫无疑问的.数组可以把索引当成键名,把索引对应的元素当成该键名的键值. vue对象有些操作不能双向绑定的原因是vue未改变原对象,以及未给新增属性增加set ...
- 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
前言:在C/S架构上,WPF无疑已经是"桌面一霸"了.在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用.但是WPF也有很多年的历史了,并且基于MVVM ...
- vue Object.defineProperty Proxy 数据双向绑定
Object.defineProperty 虽然已经能够实现双向绑定了,但是他还是有缺陷的. 只能对属性进行数据劫持,所以需要深度遍历整个对象 对于数组不能监听到数据的变化 虽然 Vue 中确实能检测 ...
- [vue]通过watch实现数据双向绑定
modal:单向绑定 <head> <meta charset="UTF-8"> <title>test</title> <s ...
随机推荐
- linux lvm管理扩展 RAID磁盘阵列管理
LVM逻辑卷将多个物理分区/磁盘从逻辑上组合成一个更大的整体,从其中划分出不同的逻辑分区,逻辑分区的大小可以根据需要扩大,缩减!!!!/boot用来存放引导文件,不要基于LVM创建 PV(物理卷)物理 ...
- HighGUI图形图像界面初步——滑动条的创建和使用
---恢复内容开始--- 滑动条是OpenCV动态调节参数特别好用的一种工具,它依附于窗口而存在.由于OpenCV没有实现按钮功能,所以很多时候,我们可以用仅含0-1的滑动条来实现按钮的按下于弹起效果 ...
- HighGUI图形图像界面初步—— 图像的载入、显示与输出
HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出.视频捕捉.图像和视频的编解码.图形交互界面的接口等. 在本章中,我们将学到: 图像的载入.显示和输出到文件的详细分析 滑动条的创建和 ...
- SUSE(Linux操作系统)
suse linux 即 SUSE (Linux操作系统) . SUSE(发音为/zuz?/),发音的音频文件.SUSE Linux 原来是德国的 SuSE Linux AG公司发行维护的Linux发 ...
- OpenStack_I版 2.keystone部署
生成keystone默认证书,指定用户 修改keystone主配置文件 第625行,修改数据库连接方式 修改完成同步数据库 同步完成可以查看数据库是否有表生成 为了以后调试keystone方便,现 ...
- hihocoder1391 Country
题解的那种前缀和以前没学过,感觉是种套路 #include<bits/stdc++.h> using namespace std; const int INF = 0x3f3f3f3f; ...
- 常用的freemark语法(三)
一,符号的意义 1.0,单问号 ?后面要加关键字,例如:<#if object?exists>object对象不为空</#if> <#if str??>${str? ...
- Linux之shell典型应用之脚本实现
一. 提取Linux操作系统信息 二. 获取操作系统运行状态 三. 分析应用状态 四. 应用日志分析 第一章:VIM编辑器设置 一.语法高亮 syntax on/off 二.显示行号 set ...
- Hibernate【与Spring整合】
前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...
- Maven使用中央仓库下载慢的解决办法
配置Maven仓库的方法 打开Maven配置文件Setting.xml,如下: vim /Users/yuanweipeng/.m2/settings.xml 在配置文件中添加如下配置: <mi ...