## 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中運行起來,效果如下:
[](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