2012-01-03 134 views
2

我有一個CSHTML頁面,讓這些錯誤:

Uncaught ReferenceError: $ is not defined    TabNotes:2 
(anonymous function)         TabNotes:2 
TabNotes:12Uncaught ReferenceError: ko is not defined TabNotes:12 
(anonymous function)         TabNotes:12 
(anonymous function)         TabNotes:23 

什麼會導致這樣的錯誤?我找不到任何理由。我試着包裝的JavaScript函數$(文件)。就緒(函數(){但沒有任何工作的代碼如下

@model test.Web.Framework.Areas.Administration.Models.TabNotesModel 
@using (UI.DocumentReadyScript()) 
{  
    if (Model.meta.id.HasValue) 
    { 
     UI.jQuery("#tbl" + Model.meta.modelname).flexigrid(Model.Grid); 
    } 
} 
<form method="post" action="@Url.Action("TabNotes", new { cmd = "refresh" })" id="@Model.meta.modelname"> 
<div class="ui-state-highlight ui-corner-all highlight" data-bind="visible: meta.message"> 
    <span class="ui-icon ui-icon-info"></span><strong data-bind="text: meta.message"> 
    </strong> 
</div> 
@using (UI.BeginBlock("Administation.TabNotes", UI.Label("Notes", "Notes").ToString(), test.Web.Framework.Core.enumIcons.pencil, false, false)) 
{ 
    <table id="@("tbl" + Model.meta.modelname)"> 
    </table> 
} 
</form> 
<script type="text/javascript"> 
(function() { 
     var viewModel=ko.mapping.fromJS(@Html.Raw(UI.JavascriptEncode(Model))); 
     viewModel.getData=function() { return ko.mapping.toJSON(this ); }; 
     viewModel.setData=function(data){ 
     $('#tbl'+this.meta.modelname()).flexigrid(data.Grid); 
     ko.mapping.updateFromJS(this,data); 
     }; 
     $('#@Model.meta.modelname').koform({viewmodel: viewModel , validate : {errorElement:'p' } }); 
     $('#@Model.meta.modelname').koform('applyBindings'); 
     $('#load-partial').click(function() { 
      $('#partial').load('@Html.Raw(@Url.Action("CreateNote", "Entity", new {modelEntity = @Model.meta.entity, itemId = @Model.meta.id}))'); 
     }); 
    })(); 
</script> 


<div id="partial"></div> 
<button type="button" id="load-partial">Create Note</button> 

編輯:。 jQuery的會從母版頁加載

+2

您是否記得包含jQuery? – Grexis 2012-01-03 23:55:18

回答

6

這意味着jQuery的($)和基因敲除(ko)中沒有定義,這通常出現在當不是由腳本已被執行時加載庫。

確保你加載框架在使用它們之前(也就是說,你的框架相關的腳本標籤被插入之前你的頁面級腳本)。如果這很好,請在開發人員面板中檢查您的網絡活動,以確定在下載框架時是否收到錯誤的請求。這可能是因爲你在異步加載框架,這意味着你需要一個異步處理程序來開始執行頁面級腳本。

+0

jquery和ko被加載到主頁面中,不應該總是在頁面的其餘部分之前加載? – 2012-01-05 17:24:01

+0

@NiekdeKlein:我不確定C#應用程序的結構(我自己使用LAMP堆棧),但這些是我首先檢查的第一個可能性。 – 2012-01-05 17:28:03

1

你的代碼中的哪個地方引用了KO和jQuery?通常會發生此錯誤是因爲您的代碼在加載引用之前嘗試運行。

我建議使用Fiddler或其他網絡活動工具來觀察何時加載(或不加載)引用以及從何處引用。

+0

它們在主頁面中被引用 – 2012-01-06 19:09:58

0

我試圖將jQuery UI小部件合併到我的網站時出現此錯誤。我不得不更新正在包含的css文件的正確路徑;它有時可能會很挑剔。也必須爲jquery做同樣的事情。還要注意你的本地主機在哪裏,關於你的'src =「/ code/blah_folder」的位置。希望能幫助到你。

相關問題