2016-07-27 16 views
6

Tôi đang viết một chức năng hiển thị thông báo lỗi, vì vậy trong quan điểm của tôi, tôi có một cái gì đó giống nhưCó cách nào để tạo một nút Html trống trong Elm-Html không?

div [] [ displayErrors model ] 

trong trường hợp không có lỗi, làm thế nào tôi có thể làm displayErrors trở lại một cái gì đó được hiểu như là một nút Html trống?

Trả lời

1

@ câu trả lời robertjlooby trông hoàn toàn tốt đẹp đối với tôi.

Tuy nhiên, nếu bạn thực sự không muốn có bất kỳ nút nào, bạn có thể thực hiện displayErrors trả lại Maybe (Html msg).

Sau đó, bạn có thể thay đổi mã của bạn như sau:

import Maybe.Extra exposing (maybeToList) 

div [] (displayErrors model |> maybeToList) 

Khi displayErrors lợi nhuận Nothing, các div sẽ được thực sự trống rỗng.

Lưu ý: bạn có thể cài đặt module Maybe.Extra với lệnh sau đây:

elm package install elm-community/maybe-extra 
+0

Vâng, đây là một giải pháp tốt đẹp. Vấn đề duy nhất là, nếu tôi đang sử dụng điều này trong một danh sách. Vì vậy, ví dụ: div [] [stuff, (displayErrors model |> maybeToList)], điều này sẽ không thực sự hoạt động. Tôi đoán không có cách nào thực sự tốt để giải quyết vấn đề này với các chữ ký chức năng Html hiện có. Có lẽ chữ ký trả về phải là Có lẽ (Html ​​Msg) thay vì Html Msg. – jz87

+1

Trong trường hợp đó bạn có thể nối các danh sách: 'div [] ([stuff] ++ (displayErrors model |> maybeToList))' –

+0

@ Down-cử tri: có lẽ bạn quan tâm để giải thích? –

10

Bạn có thể sử dụng một nút Html.text với một chuỗi rỗng:

emptyNode = Html.text "" 
+2

Điều này được tối ưu hóa đi? Tôi lo lắng về việc sử dụng các nút ảo này vì khả năng kích hoạt một số quy tắc CSS dẫn đến kết quả không mong muốn. – jz87

+0

@ jz87 trông giống như không có gì được hiển thị – rpearce

Các vấn đề liên quan