2016-09-27 33 views
-2

需要的js與jQuery依賴性誤差需要我面臨與jQuery依賴性腳本的裝載JS

我有jQuery插件,jQuery庫和2個模塊JS

資產> JS>供應商> jQuery庫, 資產> JS> apps.js,pageTop.js,categoryJS.js

我apps.js:

require.config({ 
    'baseUrl':'assets/js', 

    'paths':{ 

     'jQuery':'vendor/jquery-1.11.2.min', 
     'viewportSize':'viewportSize-min', 
     'isoTopFilter':'isotope.pkgd.min', 
     'categoryJS' :'categoryJS' 

    }, 

    shim:{ 

     'jQuery': { 
      'exports':'$' 
     }, 

     'viewportSize' :{ 
      deps:['jQuery'] 
     }, 

     'isoTopFilter':{ 
      deps:['jQuery'] 
     }, 

     'pageTop':{ 
      deps:['jQuery'] 
     }, 

     'categoryJS':{ 
      deps:['jQuery'] 
     } 
    } 
});//require.config 

define(['jQuery','viewportSize','isoTopFilter','pageTop','categoryJS'], function($, pageTop, categoryJS) { 

$(function() { 
pageTop.alertProduct(); 
categoryJS.categorySlider(); 
}); 
}); 

和我pageTop.js

define([],function(){ 
    return { 

    alertProduct: function(){ 
    alert('I am module2'); 
    return true; 
    } 

    } 

}); 

我categoryJs.js

define([],function(){ 
    return { 

    categorySlider: function(){ 
    alert('I am module2'); 
    return true; 
    } 

    } 

}); 

該腳本不加載,收到錯誤

Uncaught TypeError: Cannot read property 'alertProduct' of undefined 

有一個人可以幫我,我已經嘗試了所有手段

回答

1

您有:

define(['jQuery','viewportSize','isoTopFilter','pageTop','categoryJS'], 
     function($, pageTop, categoryJS) 

查看依賴關係列表和參數列表。 pageTop是第二個參數,因此它將獲得viewportSize模塊的值。這裏沒有什麼魔力:依賴關係中列出的每個模塊都是傳遞給回調函數,並且它以與依賴項中顯示的順序相同的順序傳遞。假設你不需要的viewportSize價值觀和isoTopFilter你可以這樣做:

define(['jquery','pageTop','categoryJS','viewportSize','isoTopFilter'], 
     function($, pageTop, categoryJS) 

此外,

  • jQuery的調用define所以你不能爲它設置一個shim。 (它很可能會被忽略。)您應該刪除您爲其設置的shim

    與您自己的模塊相同。如果您撥打define並想要設置依存關係列表,請將相關性傳遞給define,請勿爲這些模塊設置shimshim僅適用於不調用define的代碼。

  • jQuery將其模塊名稱硬編碼爲jquery,因此您必須將其全部以小寫形式引用爲jquery。 (更多詳細信息here。)更改您的paths,以便您有jquery而不是jQuery