2017-01-13 28 views
3

在AngularJS中,ng-options可讓我們指定任何值的數組,而不僅僅是字符串,同時保留類型。例如,我可能會在整數數組上使用ng-options創建一個HTML select。當選擇一個選項時,整數值被放入模型中 - 不需要字符串到整數轉換。Elm:保存HTML select中值的類型?

在Elm中,選項的value屬性只接受一個字符串,因此selectonInput事件發回一個字符串。然後我必須手動將其轉換爲一個int。

榆樹有沒有等價於AngularJS的ng-options?或以任何方式使用select與任意,甚至非標量值?

+0

好吧,我不確定你想使用它,但我確實以博客和軟件包的形式解決了這個問題。 – toastal

回答

5

沒有辦法做到這一點。你將不得不從一個字符串解析到你想要的類型並返回。你可能包裝<select>與基於Prism的API。

給我幾個小時,下班後我會寫一個小庫是...:d

編輯:

包 - http://package.elm-lang.org/packages/toastal/select-prism/latest

博客帖子 - https://toast.al/posts/2017-01-13-playing-with-prisms-for-the-not-so-isomorphic.html

+0

這非常有幫助。我是嶄新的榆樹,還沒有遇到過棱鏡,所以我一定要更多地研究這個。感謝您的博客文章! – jchamberlain

+1

帶上一粒鹽。光學不被認爲是一些FP人的最佳實踐 - 其他人喜歡它。你可以很容易地用一個明確的get/set參數重新實現這個庫,而不是傳入一個Prism,但是學習新東西的樂趣在哪裏? – toastal

3

您可能也對我的elm-select幫助程序庫感興趣。它沒有做的一切,冷卻棱鏡/鏡頭的東西,但它可能在某些情況下是簡單的:

http://package.elm-lang.org/packages/lgastako/elm-select/1.0.0/Select

完整的示例代碼在這裏:

https://github.com/lgastako/elm-select/blob/master/src/Main.elm

+0

這也不錯。我很生氣,你認爲鏡頭和棱鏡是「酷」。 :) – toastal

+0

這太棒了!由於它的深度,我接受@ toastal的回答,但老實說,我可能會最終使用你的庫,因爲它非常簡單。謝謝! – jchamberlain

+0

其實你不能,因爲它不符合榆樹0.18 – toastal