## WeX5数据绑定01:初体验
WeX5 数据绑定(Data Bindings)是基于开源knockoutjs(http://knockoutjs.com)优化改进的前端MVVM库。 从今天开始准备对WeX5的数据绑定进行一系列的学习。为了能够更深入学习和理解,我决定采用全部写html和js源码,而不用可视化拖拽组件的方式,大家可以把这些源码拷贝到WeX5 Studio页面里执行。
## 在页面中使用数据绑定
先创建一个空页面,切换到页面的js,这时候代码如下,这些代码是创建页面时自动生成的:
define(function(require){
var $ = require("jquery");
var justep = require("$UI/system/lib/justep");
var Model = function(){
this.callParent();
};
return Model;
});
写入如下数据绑定相关代码(8-12行):
define(function(require){
var $ = require("jquery");
var justep = require("$UI/system/lib/justep");
var Model = function(){
this.callParent();
this.firstName = justep.Bind.observable('justep');
this.lastName = justep.Bind.observable('wex5');
this.fullName = justep.Bind.computed(function() {
return this.firstName.get() + " " + this.lastName.get();
}, this);
};
return Model;
});
上面代码中:8和9行代码创建可监控对象;10-12行代码创建可监控计算对象。this.firstName.get()可以取得可监控对象的值,this.firstName.set(‘xxx’)可以设置可监控对象的值。
切换到空白页的html源码,这时html源码如下,这些源码也是生成页面时自动生成的:
<?xml version="1.0" encoding="UTF-8"?>
<div xmlns="http://www.w3.org/1999/xhtml" xid="window" class="window"
component="$UI/system/components/justep/window/window" design="device:mobile">
<div component="$UI/system/components/justep/model/model" xid="model"/>
</div>
写入绑定相关的html代码如下(7-9行):
<?xml version="1.0" encoding="UTF-8"?>
<div xmlns="http://www.w3.org/1999/xhtml" xid="window" class="window"
component="$UI/system/components/justep/window/window" design="device:mobile">
<div component="$UI/system/components/justep/model/model" xid="model"/>
<p>姓:<input type="text" bind-value="firstName" /></p>
<p>名:<input type="text" bind-value="lastName" /></p>
<p>姓名:<span bind-text="fullName"></span></p>
</div>
上面代码中,7、8行用value绑定(bind-value)把input的value属性绑定到可监控对象的值上。这儿的绑定是双向绑定,双向绑定就是如果可监控对象的值变化了,会自动通知到所绑定节点属性;如果节点属性变化了,也会自动改变可监控对象的值。9行用bind-text把可监控计算对象fullName绑定到span的text属性上。
## 运行效果
在studio中运行起来,效果如下:
[![bind-01](http://wex5.com/cn/wp-content/uploads/2015/03/bind-01.png)](http://wex5.com/cn/wp-content/uploads/2015/03/bind-01.png)
在姓和名输入框里输入,下面的姓名会自动计算。要注意修改后要离开输入框才能自动计算。后面会讲如果做到输入字符后立即感知计算。
## 简单理解MVVM
MVVM是啥,请大家网上自行补脑。从上面WeX5页面源码中我们可以看出,在页面中有两个元素: V(视图)和 VM(视图模型)。html源码是V(View),js代码是VM(ViewModel)。MVVM=M+V+VM,V和VM这儿都有了,M去哪儿了呢?不好意思,这个问题只能先提到这儿,后续文章会介绍到。
本数据绑定的系列文章改编自http://www.qeefee.com/category/KnockoutJS和knockoutjs官网文档,转载此文也请说明出处!
- 快速入门
- 第一个应用
- WeX5产品能力和技术
- wex5技术理念
- WeX5可以怎么玩?
- WeX5和BeX5比较
- UI2开发
- UI2前端框架基础01:应用和页面
- UI2框架基础02:框架结构图和目录
- 组建基础
- 编程基础
- js引用
- css、text引用
- 设置资源依赖
- 代码调试
- 数据组件
- Data组件基础01:列、初始化加载状态、行对象和游标
- Data组件基础02:规则、数据遍历查找
- Data组件基础03:CRUD
- Data组件基础04:Tree、主从数据、更新模式
- Data组件基础05:再谈Data组件新增,查询,保存
- Data组件的JSON数据格式
- WeX5 & BeX5 页面框架核心之数据绑定
- 数据绑定属性系列
- 初识绑定
- visible绑定
- text绑定
- html绑定
- css绑定
- 页面布局
- 页面样式
- 样式基础
- 添加自定义图标(iconfont)
- 常用组件
- bar组件
- contents组件
- 前端路由和页面跳转
- 路由模块
- 页面跳转
- 部署和发布
- 三种部署方式
- Web app部署
- UIServer的缓存机制
- 自定义组件开发
- 组件运行时开发案例
- 组件设计时开发案例
- 组件设计时开发参考
- 属性编辑器配置和开发
- 自定义向导开发(waiting)
- 第三方库集成
- 集成Echarts
- 集成百度和高德地图
- App开发
- 打包
- App打包基础和常见问题
- App打包原理和目录结构
- App打包过程详解
- App打包服务器环境搭建
- 苹果证书申请 使用
- Android和IOS的本地应用图标规范
- Android和IOS的本地App如何安装(apk&ipa)
- 苹果App部署HTTPS进行在线下载安装
- 调试
- Android和IOS真机调试
- 插件
- 如何使用和扩展cordova插件
- cordova插件开发
- 常用cordovar插件
- SQLite插件
- 极光推送(JPush)插件
- 微信支付入门教程
- 微信、支付宝支付开发
- 服务端开发
- App与服务端交互原理
- 轻量级Baas(视频)(文字) (.net版)
- Data组件的JSON数据格式11
- 微信服务号集成(视频)
- 扩展学习资料
- bootstrap
- Knockoutjs
- JQuery
- requirejs
- phonegap/cordova