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")