Yesod:在小部件中使用小部件两次重复Julius

时间:2018-03-15 21:39:37

标签: haskell yesod 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参数的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")

0 个答案:

没有答案