2016-01-13 55 views
-1

我試着用下面的代碼使用要求JS使用jquery,主幹,下劃線使用requirejs全局?

require.config({ 
    waitSeconds: 0, 
    paths: { 
     underscore: 'underscore/underscore', 
     backbone: "backbone/backbone-min", 
     jquery: "jquery/jquery-min", 
     customhandler: "jquery/customhandler" 
    }, 
    shim: { 
     underscore: { 
      deps: ['underscore'], 
      exports: '_' 
     } 
    } 
}); 

創建單獨的文件customhandler.js和裏面我想使用骨幹,jQuery的,包括我的自定義JS文件,強調

define(['jquery','underscore','backbone'], function($,_,Backbone) { 
    //using jquery 
    var oldAjax = $.ajax; 

    $.ajax = function(options) { 
     console.log(options) 
     // Do your magic. 
     return oldAjax.apply($, arguments); 

    } 
    //need to use backbone,underscore here 
}); 

但我仍然不能讓它加載到我的應用程序。請告知。

+0

我在下面的回答中指出你的'shim'爲'jqueryajaxhandler' *是一個問題。它可能不是唯一的問題,但它仍是一個問題。這絕對是錯誤的。所以你應該刪除它。另外,你的編輯還遠離[mcve]。你現在的問題沒有什麼能夠鍛鍊你的重寫。 – Louis

+0

@Louis現在更新我的問題。對困惑感到抱歉。 – mymotherland

+1

@mymotherland其中是您的腳本從配置的入口點? – Nirus

回答

0

jQuery已經是AMD兼容了,所以看起來像你不能用這種方式來彌補這種依賴。

從官方文檔: http://requirejs.org/docs/api.html#config-shim

記住:只使用非AMD腳本墊片配置...

作爲一種原始的解決方法,你可以返回喜歡另一個對象:

return { ajax : $.ajax }; 

或者如果需要更聰明。

0

調用define的模塊不需要使用shim。如果您使用shim和一個調用define的模塊,您會得到未定義的行爲。所以這可能是你遇到問題的原因:刪除你的墊片jqueryajaxhandler

+0

我嘗試刪除jqueryajaxhandler的填充程序,仍然無法工作 – mymotherland