精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

動態模板語義分析-動態綁定XML

汽車電子技術 ? 來源:程序猿搬磚 ? 作者: 壞人 ? 2023-03-03 10:06 ? 次閱讀

DynamicDSL將遵循以下的交互展示邏輯: 描述文件(XML,Widget) --->(綁定數據)--->渲染模板--->渲染--->事件驅動--->數據改變 這樣循環下來的,最終我們看到的就是App上的界面與交互效果了。

這看上去和RN,flutter有點像,只是我們這個是特定場景的使用。

實現了AST節點,已經有了動態計算數據的能力,接下來我們將實現動態XML模板的綁定,為渲染前生成布局描述模板。

<View>
    <View text="年齡: {{ 33.22 * 2}}" color="{{ item[age] >= 20 ? '#FFFFFF' : '#DDDDDD' }}" />
class="hljs-name"View>

這個模板比較簡單,它有一個根節點,根節點有一個子節點包含兩個屬性,我們用"{{ }}"來描述需要計算的表達式,如果沒有兩個大括號則認為是原始字符串。

「這里我們規定,布局模板必須在一個根節點下面!」

XML原始節點展示如下:

圖片text節點可以直接計算出結果, color節點通過獲取環境變量中名稱為item的數據,再進一步獲取其中名稱為age的數據與20進行比較,再得到具體的值。

R"({"item":{"age": 30}})"

動態綁定之后結果如下:

圖片

到此,可以認為這個XML是我們基礎布局模板,可以拿給Flex引擎計算了。

在組件布局的時候還時常需要對組件節點進行重復或者顯示與隱藏等操作,因此: 我們規定

for="{{for xx item xxs}}" 用于實現重復組件

if="{{ expr }}" 用于實現節點是否顯示

現在我們將XML的描述修改成下面這樣:

<View>
    <View text="年齡: {{ 33.22 * 2}}" info="{{ item[name] }} : {{item[age]}}" color="{{ item[age] >= 20 ? '#FFFFFF' : '#DDDDDD' }}" for="{{ for item in items }}"/>
class="hljs-name"View>

XML原始節點展示如下:

圖片

首先我們需要遍歷節點的屬性,查找到節點中for字段的值是否為一個有效的循環表達式,然后對該循環表達式進行計算展開,結果如下:

圖片

R"({"item":{"age": 30},"items":[{"name": "小強", "age": 28},{"name": "小明", "age": 23},{"name": "小紅", "age": 18}]})"

**「這里需要特別注意的是:For會產生一個新的變量環境,for語句中定義了一個新的變量,當我們在展開時需要將新的變量(item)注入到變量環境中,item將覆蓋上一級環境變量中的item的值。

這與棧幀調用時的本地變量覆蓋上一級范圍中的變量是一樣的道理。

」** 展開之后,item是items中的每一個元素而不是根節點上的item了。

此時再對每個節點進行消解運算

注入的環境變量如下:

圖片

if語句相對簡單一點,它不會產生新的變量,只需要對表達式求值,獲取表達式的結果true則保留,false則刪除節點不展示。

測試一下,對一個相對復雜的模板進行動態綁定:

<View>
    <View text="年齡: {{ 33.22 * 2}}" color="{{ item[age] >= 20 ? '#FFFFFF' : '#DDDDDD' }}" for="{{ for item in items }}">
    class="hljs-name"View>
    <View>
        <View for="{{ for item in items }}">
            

展示結果如下,「這里需要注意的是當一個父節點在循環的時候,它的子節點也同樣會得到for生成的新變量,在展開子節點計算其屬性時,也能獲取到新的變量從而得到想要的結果。」

圖片

到這里,動態綁定就差不多了,接下來就是將綁定后的模板交給Flex引擎,計算而已了。

如果你覺得這個文章對你有用,可以分享給更多的朋友。

謝謝!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    6888

    瀏覽量

    88826
  • XML
    XML
    +關注

    關注

    0

    文章

    188

    瀏覽量

    33041
  • 渲染
    +關注

    關注

    0

    文章

    69

    瀏覽量

    10908
收藏 人收藏

    評論

    相關推薦

    基本共射放大電路的組成、靜態分析動態分析

       分析基本共射放大電路的需要從靜態和動態分析,靜態指的是“直流通路在直流電源作用下直流電流流經的通路”,用于研究靜態工作點,動態指的是“交流通路是輸入信號作用下交流信號流經的通路”
    發表于 01-12 11:38 ?1.3w次閱讀
    基本共射放大電路的組成、靜態<b class='flag-5'>分析</b>及<b class='flag-5'>動態</b><b class='flag-5'>分析</b>

    請問Labview如何讓多個按鈕控件動態和enter鍵綁定

    labview是否有動態綁定功能或其他解決辦法,即完成:在選項卡初測界面時,掃條碼后能自動測試,在選項卡終測界面時,掃條碼也能自動進入測試狀態。
    發表于 01-21 21:03

    關于使用JQuery或JS動態添加的元素無法綁定事件的問題

    解決使用JQuery或JS動態添加的元素無法綁定事件的問題
    發表于 04-30 11:41

    動態ppt課件模板

    動態的ppt課件模板,帶動畫的細紋設計課件模版, 動態魔方課件模版
    發表于 12-03 19:10 ?0次下載
    <b class='flag-5'>動態</b>ppt課件<b class='flag-5'>模板</b>

    動態限載系統的設計和分析

    動態限載系統的設計和分析 Design and Analysis of Dynamic Load Limit System
    發表于 03-16 15:01 ?8次下載

    某裝備結構動態特性分析

    利用試驗模態分析法獲得了某機槍結構的模態參數,分析了機槍的動態特性,并通過基于模態試驗的靈敏度分析方法,獲得了影響該機槍動態特性的敏感部位,
    發表于 10-10 14:29 ?13次下載

    多級放大電路的動態分析

    多級放大電路的動態分析 1 電壓放大倍數壓放大倍數 2
    發表于 05-23 16:56 ?6518次閱讀
    多級放大電路的<b class='flag-5'>動態</b><b class='flag-5'>分析</b>

    Java解析XML的一種數據綁定技術

    文中為了進一步用Java語言有效地解析XML文件,提出了一套XML文件與Java程序的綁定技術,通過該技術方法能夠使開發人員方便地將XML文件在不同平臺之間進行交互,達到跨平臺的目的,
    發表于 08-29 14:44 ?0次下載

    一種新的基于素數的XML動態編碼方法_田帥

    一種新的基于素數的XML動態編碼方法_田帥
    發表于 03-19 11:45 ?0次下載

    一種可在動態環境下構建語義地圖的算法

    Localization And Mapping,SLAM)算法已經可以達到較高的定位和制圖精度,但是在動態環境下如何通過剔除動態物體來獲得較髙的定位精度,以及理解周圍場景中存在的物體及其位置信息等問題沒有得到很好的解決。在此,文中提出了一種可在
    發表于 05-07 14:56 ?4次下載

    雙極性晶體管的動態分析

    既然有靜態分析,當然也會伴隨著動態分析。靜態分析是去掉了放大電路中的交流成分,那么,動態自然是去掉了放大電路中的直流成分。
    的頭像 發表于 08-14 16:34 ?1685次閱讀
    雙極性晶體管的<b class='flag-5'>動態</b><b class='flag-5'>分析</b>

    共射極放大電路的動態參數 動態分析步驟

      共射極放大電路的動態分析是指在考慮信號輸入時,分析電路的放大性能和頻率特性。在動態分析中,需要考慮晶體管的非線性特性以及輸入和輸出信號的
    發表于 02-27 11:12 ?4436次閱讀

    動態模板-流程設計

    動態綁定XML的邏輯已經完成了,接下來就是拆分整合各模塊,實現渲染流程的每一個環節。
    的頭像 發表于 03-03 10:05 ?529次閱讀
    <b class='flag-5'>動態</b><b class='flag-5'>模板</b>-流程設計

    動態模板語義分析-實現AST節點

    我們已經實現了數據類型的定義,在此基礎上我們就可以來實現我們的數據節點了。 在實現某個具體節點(比如一無表達式節點)之前,我們需要抽象出一個基類SemaASTNode
    的頭像 發表于 03-03 10:09 ?614次閱讀

    一個動態環境下的實時語義RGB-D SLAM系統

    大多數現有的視覺SLAM方法嚴重依賴于靜態世界假設,在動態環境中很容易失效。本文提出了一個動態環境下的實時語義RGB-D SLAM系統,該系統能夠檢測已知和未知的運動物體。為了減少計算成本,其只對
    的頭像 發表于 08-25 16:49 ?603次閱讀
    一個<b class='flag-5'>動態</b>環境下的實時<b class='flag-5'>語義</b>RGB-D SLAM系統