簡體   English   中英

如何將 <<< 元素返回到 eureka 中而不是頁面中的表單?

[英]how do a return a <<< element to a form in eureka not in the page?

我喜歡尤里卡使用的標記。

但是有一個問題 - 我想知道我是如何繞過它的

考慮

 form +++ Section()

        <<< TextRow(){ row in
            row.title = "Username"
            row.tag = "username"
            row.placeholder = "Login Email"
        }

        <<< PasswordRow(){ row in
            row.title = "Password"
            row.tag = "password"
            row.placeholder = "Password"
        }

現在想象一下你必須有一個返回那里的對象(我在 json 元數據中循環)..你怎么做?

(偽代碼 - 考慮這 2 個采樣代碼執行完全相同的工作並且需要相同)

 let someFormEngine = someEurekaFormEngine() //doesn't exist yet this is the question
 let nodes = GetJsonNodes() //returns two items in an array 

EG: nodes = [(type: 'TextRow', name: 'username'),(type: 'PasswordRow', name: 'password')]

 form +++ Section()

        for node in nodes {
            if (node.type=='TextRow'){
                 someFormEngine.DisplayTextRow(node.name)
            }
            if (node.type=='PasswordRow'){
                 someFormEngine.DisplayPasswordRow(node.name)
            }
        }

因此,當然可以動態地和以編程方式創建一個表單,其中包含由配置文件驅動的行和部分。 我自己在我創建的應用程序中做到了這一點。

但是,您將不得不創建自己的 json 元數據格式,並使用 switch 語句動態添加特定行類型並正確配置它們。 Eureka 沒有“序列化”表單的配置元數據以存儲在 json 中的機制,然后從該 json 元數據中反序列化它。 但是你可以像我一樣創建你自己的“反序列化器”,循環一些 json 元數據來創建行和節並配置它們的必要參數。

要調整您自己的示例代碼:

let section = Section()
form +++ section
for node in nodes {
   switch node.type { 
   case 'TextRow':
       section <<< makeTextRow(node: node)
   case 'PasswordRow':
       section <<< makePasswordRow(node: node)
   :
   :
   default:
}
:
:
func makeTextRow(node:Node) -> TextRow {
    return TextRow() {
        $0.tag = node.tag
        $0.title = node.title
        $0.placeholder = node.placeholder
        :
        :
    }
}

當然,您可以創建一個 makeRow(node:Node) 函數並將 switch 語句移動到該主函數中,然后循環中只有section <<< makeRow(node: node) 您可以使用許多可能的設計模式。

.cellUpdate { cell, row in請注意,您可以使用.cellUpdate { cell, row in進一步根據 Node 類中的其他元數據動態自定義動態行。 例如,在我的應用程序中,我定義了一個動態行類型“十六進制”; Eureka 目前沒有 HexadecimalRow; 但我有各種自定義鍵盤,其中之一是我剛剛分配給 TextRow 的十六進制小鍵盤。

或者,您可以根據 Node 類中的元數據再次分配不同的規則。 實際上,您可以創建各種當前在 Eureka 中作為特定行類型不存在的動態字段。

我還使用程序循環創建了一系列的 TextAreaRow,允許最終用戶以各種語言輸入其組織的名稱。 這些語言的數量和順序事先未知,因此使用循環而不是固定數量的 TextAreaRows 的“瀑布”。

所以當然,盡管所有 Eureka 示例都顯示了簡單的“瀑布”表單定義,但使用循環創建基於數據庫或 json 內容的動態表單行和部分非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM