4

ウィジェットを 2 回ロードする 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}

引数の Julius ファイルdashboardMainが 2 回読み込まれてコンパイルされるため、問題が発生しています。Yesod は、私の Julius ファイルの 2 つのコピーを連結しています。これは他の場所で物事を壊しています。

私の 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 は正常にコンパイルされますが、前述したように、Yesod/Julius がウィジェットを処理する方法が原因で、ランタイム Javascript エラーが発生します。私は何をすべきか?


編集1:

私は KnockoutJS を使用していますが、これはko.applyBindings(viewModel)1 回だけ適用する必要があります。それを変更することはオプションではありません。

dashboardLayoutによって定義されます

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

0 に答える 0