Yesod: использование виджета дважды в дубликате виджета Julius

У меня есть виджет Yesod, который загружает виджет дважды. "Основной" виджет выглядит так:

<div .container-fluid .hidden-xs>
  <div .row .no-gutter>
    <div .col-sm-3>
      <!-- sidebar content -->
    <div .col-sm-9>
      <!-- the widget i'm loading twice -->
      ^{dashboardMain}
<nav .visible-xs>
  <!-- sidebar content, also loaded twice, but this widget isn't causing problems (yet) -->
<div .container .visible-xs>
  <div .row .no-gutter>
    ^{dashboardMain}

Я сталкиваюсь с проблемами, потому что файл Джулиуса для моего dashboardMain аргумент загружается и компилируется дважды. Йесод объединяет две копии моего файла Юлиуса вместе. Это ломает вещи в другом месте.

Мой код на Haskell выглядит так:

crmSidebar :: Widget
crmSidebar = defaultSidebarItems -- Using Knockout and a convention based "api"

crmApp :: Widget
crmApp = $(widgetFile "app/crm")

getCRMDashboardR :: Handler TypedContent
getCRMDashboardR = selectRep . provideRep . defaultLayout $ dashboardLayout crmSidebarItems crmApp

Haskell компилируется нормально, но, как я уже сказал, я получаю ошибку Javascript во время выполнения из-за того, как Yesod/Julius обрабатывает мой виджет. Что я должен делать?


Изменить 1:

Я использую KnockoutJS, который требует ko.applyBindings(viewModel) наноситься ровно один раз. Изменить это не вариант.

dashboardLayout определяется

dashboardLayout :: String -> Widget -> Widget -> Widget
dashboardLayout sidebarHeader dashboardSidebarItems dashboardMain = $(widgetFile "layouts/dashboard")

0 ответов

Другие вопросы по тегам