我有一个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
参数的Julius文件正在加载和编译两次。 Yesod将我的Julius文件的两个副本连接在一起。这打破了其他地方。
我的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")