2012-05-09 2 views
0

Я пытаюсь отобразить содержимое двух последовательностей на веб-странице. Первый из них содержит имя изображения, а второй содержит URL-адрес изображения. Начало проблемы, когда я пытаюсь выполнить итерацию этих двух списков (используя foreach-like for loop) - это результат либо с несколькими именами изображений, либо с несколькими изображениями (короче говоря, полным беспорядком). Вот пример моей страницы коды рендеринга (последовательности преобразуются в вектор с помощью (vec(flatten (sequence)))):Отображение данных из двух параллельных последовательностей на веб-странице в compojure

(defn view-output [] 
    (view-layout 
    [:h2 "default images"] 


    [:form {:method "post" :action "/"} 
    (for [manganame ["image1" "image2"]] 
     [:input {:type "text" :value manganame}]) 

     (for [manga-image["image1URL" "image2URL"]] 
     [:img {:src manga-image}[:br] [:br][:br]]) ])) 

Этого кода имена дисплея, а затем фотографии. Может кто-нибудь предложить способ для вставки этих значений рядом друг с другом, Ot друг на друг (возможно, таблицы, как реализация)

       Image_name1 
           Picture1 

          Image_name2 
           Picture2 

или

    Image_name1  Image_name2 
         Picture1   Picture2 

Благодарность

ответ

2

Я просто понял, что правильный код:

(defn view-output [] 
    (view-layout 
    [:h2 "default images"] 
    [:form {:method "post" :action "/"} 
    (interleave 
     (for [manga-name ["image1" "image2"]] 
      [:input {:type "text" :value manga-name}]) 
     (for [manga-image["image1URL" "image2URL"]] 
      [:img {:src manga-image}[:br] [:br][:br]]))])) 

Как вы хотите получить список [: вход] [: IMG] [: вход] [: IMG].

Мой предыдущий ответ возвращается [: вход: IMG] [: вход: IMG]:

(defn view-output [] 
    (view-layout 
    [:h2 "default images"] 
    [:form {:method "post" :action "/"} 
    (for [[manganame manga-img] (map vector ["image1" "image2"] ["image1URL" "image2URL"]))] 
     (concat 
     [:input {:type "text" :value manganame}] 
     [:img {:src manga-image} [:br ] [:br ] [:br ]]))])) 
+0

Привет Dani, я получаю неверное число аргументов в для цикла после выполнения вашего кода, но количество аргументов цикла кажется мне хорошо. Вы можете это проверить? –

+0

Привет Митьке, я думаю, что он исправлен – DanLebrero

+4

'(раздел 2 (interleave s1 s2))' - это простой '(вектор карты s1 s2)'. – kotarak

1
(mapcat (fn [manganame mangaimage] 
      [[:input {:type "text" :value manganame}] 
      [:img {:src mangaimage}] 
      [:br] [:br] [:br]]) 
     ["image1" "image2"] 
     ["image1URL" "image2URL"]) 

дает

([:input {:type "text", :value "image1"}] 
[:img {:src "image1URL"}] 
[:br] [:br] [:br] 
[:input {:type "text", :value "image2"}] 
[:img {:src "image2URL"}] 
[:br] [:br] [:br]) 
+0

Спасибо, человек, ваше решение работало в моем другом примере !!! –