国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ExtJS中ViewModel的數(shù)據(jù)繼承

2017-10-16 21:38江雪曹子鈺李洋鐘逸
中國新通信 2017年17期

江雪+曹子鈺+李洋+鐘逸

【摘要】 ExtJS中使用MVVM設(shè)計模式時,ViewModel可以通過View的層級關(guān)系,繼承上級ViewModel的數(shù)據(jù)。本文說明此種繼承的特性以及如何使用這些特性實現(xiàn)不同需求的數(shù)據(jù)綁定

【關(guān)鍵詞】 ExtJS MVVM ViewModel 綁定 數(shù)據(jù)繼承

一、ViewModel與數(shù)據(jù)綁定

在ExtJS的MVVM模式中,ViewModel是用于存放數(shù)據(jù)的類,它將數(shù)據(jù)存放在一個名為data的對象中。關(guān)心該數(shù)據(jù)的界面,可以進(jìn)行綁定,并在數(shù)據(jù)發(fā)生改變時,收到通知,更新界面。因為ViewModel是屬于View所有,所以ViewModel可以通過View的層級關(guān)系,訪問到上級的ViewModel。這樣下級的ViewModel就可以繼承到上級ViewModel的數(shù)據(jù)。

界面組件可以通過一個bind配置將某些配置與ViewModel的data綁定,當(dāng)綁定的data中的數(shù)據(jù)發(fā)生改變時,綁定配置的setter方法會被調(diào)用,實現(xiàn)界面更新。

二、ViewModel數(shù)據(jù)繼承

ViewModel類管理一個data對象,并利用JavaScript原型鏈提供數(shù)據(jù)的繼承,如圖1所示:

這就意味著,所有組件都能讀取到Data 1中存儲的數(shù)據(jù)。如果我們在ViewModel 1中有如下的data:

那么所有組件都可以綁定到 {username}。這樣我們可以用來共享一些需要在各級組件使用的重要記錄,如當(dāng)前用戶。如果我們需在下級組件綁定中,修改上級共享的數(shù)據(jù),則應(yīng)當(dāng)使用一個對象來存放數(shù)據(jù)。舉個例子,如果在Container 2中,有一個文本框,雙向綁定到 {username},如下所示:

該文本框通過Data 2的原型鏈?zhǔn)盏絹碜訢ata 1的數(shù)據(jù)“user1”。但在文本框中修改數(shù)據(jù)后,卻保存在Data 2中。這是因為,該文本框是綁定到它自己的ViewModel的data對象上,因此雙象綁定會調(diào)用ViewModel 2上的set方法,將username保存到Data 2中。這一特性,可以用來對那些需要在不同的View中獨立使用的值進(jìn)行初始化。

但如果要通過繼承實現(xiàn)屬性的共享,那么就需要使用對象來存儲數(shù)據(jù),如下所示:endprint

石门县| 嘉兴市| 台州市| 邯郸市| 德保县| 乌兰县| 奉节县| 徐州市| 永州市| 仁布县| 顺平县| 瑞安市| 广丰县| 台湾省| 林西县| 确山县| 古丈县| 利川市| 宁晋县| 西宁市| 青海省| 宜良县| 泰安市| 固安县| 昆明市| 固镇县| 镇赉县| 阿合奇县| 通化县| 屏边| 南昌市| 陇南市| 佛教| 苍南县| 荆州市| 潞西市| 峨山| 沿河| 杂多县| 垫江县| 东兰县|