用试剂中的colspan渲染表元素

时间:2018-03-22 01:40:07

标签: html clojure clojurescript reagent hiccup

我有一个试剂表,并设置了表头的列表= 2。

 (defn my-table []
  [:table.table.table-striped.table-bordered
   [:thead
    [:tr
     [:th "Col1"]
     [:th "Col2"]
     (doall (for [id @ids]
          ^{:key id}
          [:th {:data-id (id :id)
                :col-span "2"}
           (str (get id :name))]))]]
   [:tbody
    (doall (for [i (range (count @table-items))]
         (let [table-item (cursor table-items [i])]
           ^{:key i}
           [item-row table-item])))]])

但是在每一行中,请参阅下面的item-row,我循环访问数据结构以获取该行中拆分列的数据并遇到问题。如果

,我可以正确渲染数据
[:div [:td [:span (:id id)]]
             [:td [:span (:name id)]]]

我知道这是不正确/无效的HTML。

 (defn item-row [item]
    (fn []
      [:tr
       [:td [:span (:key1 @item)]]
       [:td [:span (:key2 @item)]]
       (doall (for [id @ids]
            ^{:key id}
            [[:td [:span (:x id)]]
             [:td [:span (:y id)]]]))]))

有没有人知道如何在for循环中渲染两个:td元素?我的想法是将两个:td元素包装在一个向量中,让试剂处理渲染分割列。

 (doall (for [id @ids]
            ^{:key id}
            [[:td [:span (:x id)]]
             [:td [:span (:y id)]]])

我也收到以下错误: core.cljs:4793 Uncaught Error: No item [:td "."] in vector of length 2 at Object.cljs$core$vector_index_out_of_bounds [as vector_index_out_of_bounds]

[:td [:span (:y id)]]

相关联

1 个答案:

答案 0 :(得分:2)

您可以利用以下事实:您只是返回数据,因此一种方法是使用前两列构建:tr向量的初始内容,然后添加其余的使用:td的{​​{1}}个元素。以下是我认为可以解决您问题的一个例子:

into