2014-09-25 73 views
2

由於需求的變化,我最近在我的角度項目中添加了微風。我選擇微風是因爲我想從實體框架中使用的web api獲取元數據。但是,一旦我配置了微風,從webapi加載元數據,並將我新創建的模型綁定到我的表單上的輸入框,我遇到了一個問題。我正在使用type =「email」屬性的輸入,並且我無法再輸入該輸入!Angular Breeze input box type =「email」

我在Plunker上從Ward Bell分出一個項目,並將電子郵件地址的輸入類型更改爲「email」,我也無法輸入該輸入。

MyPlunk

我這麼想嗎?或者是這種設計的行爲?

回答

0

我想我可能已經發現了兩個錯誤,但就目前而言,我只是沒有時間去進一步研究。我只需要一個解決方案,所以我可以繼續前進。

所以這就是我發現的。

{\ 「名稱\」:\ 「EmailAddress的\」,\ 「類型\」:\ 「Edm.String \」 當我從微風/元網頁API,我得到fetchMetadata ,「maxLength」:\「30 \」,\「fixedLength \」:\「false \」,\「unicode \」:\「true \」,\「可空\」:\「false \」}

我已經確定我的模型中EmailAddress的屬性屬性爲[EmailAddress](System.ComponentModel.DataAnnotations),但它似乎EFContextProvider沒有正確查看此屬性。這是我認爲一個bug位於的地方。我不確定這個項目是否是開源的,但如果是這樣的話,我會在我得到時間時看看,或者如果有人知道,我會很感激,看看它是一個bug還是我做錯了什麼。

因此,在獲取元數據後,我將在實體管理器中創建我的第一個實體,如果我查看我的屬性EmailAddress的驗證器,它只有兩個驗證器required和maxlength。所以我連接了EmailAddress驗證器。

var emailProperty = newEmployee.entityType.getProperty("emailAddress"); 
emailProperty.validators.push(breeze.Validator.emailAddress()); 

第二個錯誤,我相信是當我使用data-z-validate屬性與<input type="email"/>走這使得輸入框不可用。原來的問題是我遇到的問題。所以爲了使它工作,我只是讓微風驗證我的電子郵件地址,它工作正常。

+0

如果Breeze做了驗證,你可以刪除'type =「email」'並保持z驗證嗎?是否比放棄z-validate和保持類型更好或更差? P.S .:我很想深究這一點,只是沒有時間。 – Ward 2014-09-30 21:03:22

+0

我已經從我的輸入中刪除了'type =「email',並且我讓z-validate驗證了我的電子郵件地址。我這樣做是因爲我能夠將'breeze.Validator.emailAddress()'推送到我的emailProperty。不管怎麼樣,我不知道,我只是因爲需求的改變而將Breeze帶入了我的應用程序。在Breeze之前,我只是在angularjs服務中使用json對象,但我需要更強大的功能。 – 2014-09-30 21:19:31

+0

zValidate方法是,您可以自定義和擴展屬性驗證邏輯(超出「Validator.emailAddress」提供的內容)而不更改您的HTML標記。 – Ward 2014-10-21 20:27:37