setModel 的核心邏輯
Sent: Friday, March 20, 2015 3:28 PM
為什么UI controlcall了setModel,傳入了正確的json 數(shù)據(jù)之后,控件在runtime時仍然沒有顯示任何東西?
example:有一個table控件,items綁定如下:
某個table cell綁定信息如下:
通過setModel將如下的數(shù)據(jù)綁定到table上, ProductId在json數(shù)據(jù)里的值為HT-1020:
setModel的執(zhí)行過程:
處理最外層的items綁定,其path是xml view里指定的/LineItems
sPath提示該binding是table最外層的binding,oList為json data里table的兩條行數(shù)據(jù):
依次處理table row里每個column的綁定:
從這里能看出,setModel進行數(shù)據(jù)綁定的過程中,也是一個把Model里json data對應的字段的實際內(nèi)容寫入到bindingInfo 這個抽象類的instance里的過程,setModel完全可以看成一個賦值過程:
如何判斷setModel是否成功執(zhí)行
setModel執(zhí)行完后,檢查調(diào)用setModel的control instance的oModels field,找出里面名字和調(diào)用setModel時傳入的model name一致的字段( 如果調(diào)用setModel時沒有傳model name,則model name 為undefined ):
如果發(fā)現(xiàn)aBindings length 大于0,并且能夠從每個item里看到item 綁定的路徑信息和實際的值,就說明setModel成功執(zhí)行了。