2012-08-04 29 views
0

我想編寫一個在每個apge上運行的腳本 - 使用我剛剛加載的jquery插件 - 並在所有插件加載後首先運行它。根據意見迄今爲止,這需要確定和Require.js運行的模塊...如何在使用require.js之後通過簡單的腳本引用訪問jquery全局名稱空間?

我有頁腳部分中包含我Require.js代碼,因此CMS:

<!-- special version of jQuery with RequireJS built-in --> 
script data-main="/addons/shared_addons/themes/base/js/main" src="/addons/shared_addons/themesbase/js/require-jquery.js" type="text/javascript"> /script 

...我main.js是相當標準:

// urlArgs: "bust=v1" // for release 
require.config({ 
    urlArgs: "bust=" + (new Date()).getTime(), 
    paths: { 
     Corner: "/addons/shared_addons/themes/base/js/jquery.corner", 
     JQForm: "/addons/shared_addons/themes/base/js/jquery.form", 
     Gritter: "/addons/shared_addons/themes/base/js/jquery.gritter.min", 
     JQUI: "/addons/shared_addons/themes/base/js/jquery-ui-1.8.21.custom.min", 
     TimePicker: "/addons/shared_addons/themes/base/js/jquery.ui.timepicker", 
     DateFormat: "/addons/shared_addons/themes/base/js/date.format", 
     countdown: "/addons/shared_addons/themes/base/js/jquery.countdown.min", 
     JQMustache: "/addons/shared_addons/themes/base/js/jquery-Mustache", 
     Mustache: "/addons/shared_addons/themes/base/js/mustache", 
     Kendo: "/addons/shared_addons/themes/base/js/kendo.web.min", 
     Chosen: "/addons/shared_addons/themes/base/js/chosen.jquery.min", 
     EveryPage: "/addons/shared_addons/themes/base/js/another_doc_ready_script" 
    }  
}); 

require([ 
'jquery', 
'Corner', 
'JQForm', 
'Gritter', 
'JQUI', 
'TimePicker', 
'DateFormat', 
'countdown', 
'JQMustache', 
'Mustache', 
'Kendo', 
'Chosen' 
], 
[ "EveryPage" ], 
function($) { 
    //run 
    $(function() { 
     console.log('get everything we could possibly need'); 
    }); 
}); 

「another_doc_ready_script.js」 包含 「everypage」 模塊定義:

console.log('here'); 
define("EveryPage", 
     [ 
     'jquery', 
     'Corner', 
     'JQForm', 
     'Gritter', 
     'JQUI', 
     'TimePicker', 
     'DateFormat', 
     'countdown', 
     'JQMustache', 
     'Mustache', 
     'Kendo', 
     'Chosen' 
     ], 
    function($) { 
console.log('in everypage'); 
$(document).ready(function() { 
    console.log('in everypage doc ready'); 
     $("body").removeClass('nodisplay'); 
    }); // document ready 
console.log('leaving everypage'); 
    } // function-define-require 
); // define-require 

編輯:Bergi的評論使this更有意義。我已經修改了上面的代碼,但它仍然不起作用。壓縮。納達。沒有控制檯日誌語句或錯誤。這是一個常見的用法,但我沒有找到一個簡單的例子。

回答

1

the docs

模塊是從傳統的腳本文件不同的[...]。它可以明確列出它的依賴關係[...]。

[那]允許它們儘可能快地加載,甚至不按順序,但以正確的依賴順序評估。

如何定義這種依賴關係的模塊在section § 1.2.3中有描述。

+0

謝謝,Bergi。我根據你的評論嘗試了其他的東西,但我仍然沒有一個工作的例子。更新主要問題以反映當前狀態。 – shamelesshacker 2012-08-04 14:52:24

+0

因此,現在可以在網絡標籤中看到腳本加載(在'define'之前嘗試一個日誌語句),但是在那裏定義的模塊沒有執行? – Bergi 2012-08-04 15:11:45

+0

no sir,現在「網絡」標籤中沒有加載「another_doc_ready_script.js」腳本。儘管如此,其他所有內容都與這些插件位於相同的目錄中。 (做了更多的嘗試[鏈接] http://backbonetutorials.com/organizing-backbone-using-modules/;見上) – shamelesshacker 2012-08-04 15:29:28

相關問題