Flex物件與元件的資料 雙向繫結

2022-08-04 10:42:10 字數 3382 閱讀 5149

用於flex中entity物件與display物件之間的資料雙向動態繫結,支援textinput、datefield、combobox。

1package

controller.utils;        

25/**

26*  儲存監控物件的控制代碼

27* key: entityobj

28* value: changewatcher

29*/

30private

static

var handlelist:imap 

=new

hashmap();

3132

/**33

*  物件與元件的資料動態雙向繫結  

34* 

@param

entityobj   entity object

35* 

@param

displayobj  mx控制項

36* 

@param

type                 控制項型別,如:'mx.controls::textinput'

37* @exclude                     需要排除的property

38* @bidirectional               是否做雙向繫結(如果為false,那麼只做entity到displayobject的繫結)

39* 

@param

commitonly

40*/

41public

static

function bidirectionaldatabind(

42entityobj:object, 

43displayobj:displayobject,

44exclude:array

=null,45

bidirectional:boolean

=true,46

type:string='

all'

,                                    

47commitonly:boolean 

=false

):void52}

else

6970

//檢查該property是否存在

71if

(beanutils.checkpropertyexist(entityobj,proname) 

==false)74

75try

8182

var cw:changewatcher 

=changewatcher.watch(entityobj,proname,setdata);

83handleobject(handlelist.getvalue(entityobj)).addchangewatcher(proname,cw);

8485

bindingutils.bindproperty(entityobj,proname,displayobject(displayobj[proname]),prop,commitonly);86}

else91}

catch

(err:error)94}

95}96}

9798

/**99

*  清空監控物件的控制代碼集合

100*/

101public

static

function clean():

void

106107

handlelist.clear();

108}

109}

110111

/**112

*  監聽combobox事件的變化

113* 

@param

obj114

*/115

private

static

function setdata(obj:propertychangeevent):

void

119var ho:handleobject 

=handlelist.getvalue(obj.source);            

120var cw:changewatcher 

=ho.getchangewatcher(obj.property);

121122

if(obj.newvalue is string)

else

131}

132133

/**134

*  返回元件type對應的需要填充的屬性名稱 

135* 

@param

type

136* 

@return

137*/

138private

static

function getsiteprop(type: string): string

143}

144return

null

;145

}146

}147

}148

149import

mx.binding.utils.changewatcher;

150import

com.ericfeminella.collections.imap;

151import

com.ericfeminella.collections.hashmap;

152internal 

class

handleobject

160161

public

function addchangewatcher(propname:object, cw:changewatcher):

void

164165

public

function getchangewatcher(propname:object):changewatcher

168169

public

function clean():

void

173174

properitylist.clear();

175}

176}

1771

package

controller.utils

2728

var objinfo:object 

=objectutil.getclassinfo(targetobj);

29for

each(var name:string in objinfo.properties)33}

3435

return

false;36

}37

vue專案 父元件和子元件之間資料的雙向繫結

vue裡面子元件通過props可以獲取父元件的資料,但是我們在子元件裡無法直接修改props裡傳遞的父元件變數。當然你可以使用vue的子元件事件機制,通過emit來實現反向傳遞資料的能力。但是我自個用的時候總感覺寫好乙個元件之後,用的時候還要在父元件裡加上對應的事件處理很不爽。所以我一般是用下面的方...

Vue核心知識 Vue的元件之自定義雙向繫結

實現資料雙向繫結 在元件內,新增 props 元件修改資料時 emit 事件,並把改的新值傳出去 從而實現資料的雙向繫結。import vue from vue const component new vue el root data template value value input value...

Vue 元件的雙向資料繫結

我們之前已經有學過在普通的dom元素上通過v model指令來進行簡單的雙向資料繫結,一般我們會在表單元素上使用這個指令.text v model value div let vm newvue script 所謂的雙向資料繫結就是顯示資料發生變化,vue 中的資料也隨之發生變化,vue中的資料發生...