2014-02-28 42 views
0

我試圖將toastr帶入我的應用程序。我做了一件很簡單的事情:toastr使用toastr.js時未定義

 bundles.Add(new ScriptBundle("~/Content/example-scripts").Include(
      "~/Areas/Examples/Scripts/vendor/*.js" 
        )); 

那裏的文件夾包含toastr.js。然後在我的觀點:

@Scripts.Render("~/Content/example-scripts") 

我看到toastr在Chrome得到裝載,然而當我打電話toastr從我的視圖模型:

$(document).ready(function() { 
    toastr.success('sup'); 
    ko.applyBindings(new ViewModel()); 
}); 

我收到以下錯誤:

Uncaught Error: Mismatched anonymous define() module: function ($) { 
     return (function() { 
      var version = '2.0.1'; 
      var $container; 
      var listener; 
      var toastId = 0; 
      var toastType = { 
       error: 'error', 
       info: 'info', 
       success: '...<omitted>...ch require.js:166 
Uncaught ReferenceError: toastr is not defined sampleVm.js:36 

我究竟做錯了什麼?

+1

查看頁面上的源代碼並確保該包中包含toastr,然後確保您試圖引用該腳本的腳本在該呼叫之後 –

+0

Thanks @MattBodily。我看到toastr.js被加載,然後在那之後,我的vm調用它。 – SB2055

+0

看來你使用require.js,但你沒有使用它來加載toaster.js,這導致了這個異常...另請參閱:http://requirejs.org/docs/errors.html#mismatch – nemesv

回答

4

看來你正在使用require.js因爲error message是來自它。

Mismatched anonymous define() module意味着toaster.js被定義爲一個匿名模塊,但它不是通過require.js模塊裝載機構裝載。

所以在你的情況下,兩個解決方案是:

  • 如果您正在使用require.js,用它來裝載toaster.js
  • 如果不打算使用require.js,只是從你的頁面中刪除參考和toaster.js將加載就好