Asp.net-Mvc

在視圖中使用 ko 時,ko.applyBindings 給出錯誤“ko 未定義”

  • January 18, 2018

我的 MVC 佈局中有以下內容(在底部):

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/viewmodels")

我在開發人員工具的“源”選項卡中看到了淘汰賽載入。

在我的一種觀點中,我必須做到以下幾點:

<script type="text/javascript">ko.applyBindings(@Html.Raw(Json.Encode(Model)));</script>

但這給了我一個錯誤:ko is not defined

為什麼會發生這種情況,儘管已經載入了淘汰賽?

問題是我的視圖是在淘汰賽之前載入的。將它推到我的 Layout.cshtml 的頂部:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/knockout")

修復了問題。

您也應該將**@ko.Apply(Model)**放在頁面底部,而不是在頁面頂部拉腳本。

以下程式碼將解決您的問題

@section scripts{
   @ko.Apply(Model)
}

記得在佈局視圖上聲明一個腳本部分,否則會導致異常

@RenderSection("scripts", required: false)

引用自:https://stackoverflow.com/questions/18839809