Я пытаюсь сделать очень основное приложение для пьедестала, чтобы отобразить список элементов или текстовое сообщение, если список пуст.Пьедестал: какой поток данных вы можете использовать для визуализации вновь инициализированного пустого списка?
Я думал, что я хотел:
- модель данных, где [: корень: пункты] был бы мой список элементов
- функция шаблона для страницы ([: корень])
- статическая функция-шаблона для пустого списка
- функция динамического шаблона для списка с элементами
- в начале приложения, отправить сообщение, которое будет инициализировать список пустой
- в рендеринге, ответьте на:
[node-create [] :map]
делая ... ничего?[node-create [:root] :map]
рендерингом шаблон для полной страницы[node-create [:root :items] :map]
путем добавления шаблона для пустого списка
Чтобы быть ясно, что я хочу, чтобы отобразить в конце концов, будет (без элементов)
<html>
<div>My list</div>
<p>There is nothing in the list</p>
</html>
и когда есть что-то в списке:
<html>
<div>My list</div>
<ul>
<li>item1</li>
<li>item2</li>
</ul>
</html>
Есть ли я на правильном пути здесь?
Я застрял в инициализации модели данных, чтобы быть тем, что хочу. Ближайший я получил это:
;; behavior.clj
(defn init-root-transform [old-value message]
{})
(defn init-items-transform [old-value message]
[])
(def example-app
{:version 2
;; :transform [[:set-value [:greeting] set-value-transform]]})
:transform [[:bootstrap [:root] init-app-transform]
[:bootstrap-systems [:root :items] init-items-transform]
]})
;; start.cljs
... skipped...
(app/begin app)
(p/put-message (:input app) {msg/type :bootstrap msg/topic [:root]})
(p/put-message (:input app) {msg/type :bootstrap-systems msg/topic [:root :items]})
Проблема заключается в том, что, таким образом, я получаю модель данных с одного: корневого узла, содержащего значение {: пункты []}.
Это может показаться очень глупым вопросом, но эти две модели данных одинаковы?
[:root :systems] => []
[:root] => {:systems []}
И когда я загружаю мое приложение, сгенерированные дельт визуализации являются:
[node-create [] :map]
[node-create [:root] :map]
[value [:root] nil {:items [] }]
Я не думаю, что это подходит для визуализации мой список элементов, не так ли?
ОБНОВЛЕНИЕ:
@solussd подразумевает, что два datamodels являются одинаковыми; однако, когда генерируется следующая дельта:
[value [:root] nil {:items []}]
Я до сих пор не могу справиться с этим. Если добавить рендеринга конфигурации, как это:
[value [:root :items] render-items-list]
Тогда функция render-items-list
является не называется.
Если добавить рендеринга конфигурации, как это:
[value [:root] render-root]
Тогда функция render-root
будет называться, но, очевидно, не с правильной «пути», и я полагаю, что это также будет вызываться, когда любой другой изменение в элементе ': root' в модели данных изменяется.
Любая идея, как я могу исправить это можно только приветствовать ...
Возможно, вы попытаетесь опубликовать рассылку в списке почтовых пользователей, чтобы получить справку - https://groups.google.com/forum/#!forum/pedestal-users –
Я, хотя 21-й век был хорошим местом, но уверен , Я попробую, и не получится ответить ни там, ни там: P – phtrivier
(Да, это грустный и ребяческий комментарий. Только не в тот день. Извините.) – phtrivier