2016-04-19 32 views
0

我需要通過包含自定義屬性中常見的,像下面(不同類型的)所有輸入:獲取在視圖中使用自定義屬性的所有輸入

<m:Input value="{building>/shortName}" custom:required="true"/> 
... 
<m:Input value="{building>/longName}" custom:required="true"/> 

因此,我可以在每做一個驗證其中之一。

你們有些人可以想像爲什麼我這樣做(sap.m.Input還沒有required財產本身作爲sap.ui.commons.TextField有)。

通過純jQuery,我可以得到它,但它絕對是我最後的選擇嘗試。

有誰知道如何獲得這樣的過濾控件列表?

同樣的問題的另一個更好的解決方案也是受歡迎的。

+0

我不認爲這樣做驗證這樣是向前..通過類型綁定更好地利用輸入驗證所提議的@aborjinik – Qualiture

+0

實實在在地事實上,通過類型綁定進行驗證絕對是一種可行的方式。但想象一下,您有幾個必填字段,請勿觸摸它們,只需點擊「保存」即可。它必須在發佈前驗證它們,對吧?我的需要只是爲了這個原因,而不是取代類型綁定。 –

+0

在這種情況下,請參閱我之前寫過的博客:http://scn.sap.com/community/developer-center/front-end/blog/2015/11/01/generic-sapui5-form-validator – Qualiture

回答

0

我認爲用String類型添加minLength約束和監聽驗證錯誤會是一個更好的方法。

<Input value="{ 
    path : 'building>/shortName', 
    type : 'sap.ui.model.type.String', 
    constraints : { 
     minLength: 1 
    } 
}" /> 

sap.ui.getCore().attachValidationError(function (oEvent) { 
    oEvent.getParameter("element").setValueState("Error"); 
}); 

您也可以看看這個樣本 https://openui5.hana.ondemand.com/explored.html#/sample/sap.m.sample.InputChecked/preview

+0

這將需要我調用一個綁定驗證,這是框架不允許的。這就是爲什麼我試圖找出如何通過某個選擇器獲取所有元素,所以我可以通過它們。我已經有了一個解決方案,那就是調用view.findElements()並通過它們檢查它們的類型,但在我看來這是一個糟糕的方法。 –

+0

@MarinhoBrandão你能告訴我它寫在哪裏,這是框架不允許的嗎?在具有MessageModel的新版UI5中,甚至不需要attachValidationError。如果約束失敗,它會自動顯示錯誤狀態。 – aborjinik

+0

嗨@aborjinik,我沒有任何明確的說法,但我創建了一個例子,所以你可以看到我的意思:https://github.com/marinho/temporary-openui5-example-1 只需搜索XXX看看我的意思 –

相關問題