2014-04-20 49 views
3

我是新使用RequireJS和我有它的問題,這是錯誤:RequireJS和jQuery的:無法加載功能擴展

Uncaught TypeError: Object [object Object] has no method 'jarvismenu'

這是我的代碼:

app.js (RequireJS主要配置):

/*global define, angular */ 

'use strict'; 


requirejs.config({ 
    paths: { 
     'jquery'    : 'libs/jquery-2.0.2.min', 
     'jqueryui'    : 'libs/jquery-ui-1.10.3.min', 
     'jquerytouch'   : 'plugin/jquery-touch/jquery.ui.touch-punch.min', 
     'bootstrap'    : 'bootstrap/bootstrap.min', 
     'smartnotification'  : 'notification/SmartNotification.min', 
     'jasviswidget'   : 'smartwidgets/jarvis.widget.min', 
     'jqueryeasypiechart' : 'plugin/easy-pie-chart/jquery.easy-pie-chart.min', 
     'sparkline'    : 'plugin/sparkline/jquery.sparkline.min', 
     'jqueryvalidate'  : 'plugin/jquery-validate/jquery.validate.min', 
     'jquerymaskinput'  : 'plugin/masked-input/jquery.maskedinput.min', 
     'select'    : 'plugin/select2/select2.min', 
     'bootstrapslider'  : 'plugin/bootstrap-slider/bootstrap-slider.min', 
     'jquerymbbrowser'    : 'plugin/msie-fix/jquery.mb.browser.min', 
     'fastclick'    : 'plugin/fastclick/fastclick', 
     'demo'     : 'demo', 
     'appDash'    : 'appDash', 

     //controller 
     'dashboard-ctrl'  : 'controllers/DashboardCtrl', 
     'home-ctrl'    : 'controllers/HomeCtrl', 
     'report-ctrl'   : 'controllers/ReportCtrl', 
     'instance-ctrl'   : 'controllers/InstanceCtrl', 

     //services 
     'report-service'  : 'services/ReportService', 
     'instance-service'  : 'services/InstanceService', 

     'util-service'   : 'services/UtilService', 
     //directives 
//  taxonomyDrtv   : 'directives/TaxonomyDrtv', 
     'directives'   : 'directives/Directives' 
     //service 
//  taxonomyServices  : 'services/TaxonomyService' 
     //filters, 
    }, 
    shim: { 
     jqueryui   : ['jquery'], 
     jquerytouch   : ['jquery'], 
     smartnotification : { 
      deps :['jquery'], 
      exports : 'jQuery' 
     } , 
     bootstrap   : ['jquery'], 
     jasviswidget  : ['jquery'], 
     jqueryeasypiechart : ['jquery'], 
     jqueryvalidate  : ['jquery'], 
     jquerymaskinput  : ['jquery'], 
     jquerymbbrowser  : ['jquery'], 
     select    : ['jquery'], 
     bootstrapslider  : ['jquery','bootstrap'], 
     demo    : ['jquery'], 
     appDash    : { 
      deps : ['jquery','jqueryui','jasviswidget','bootstrap','jquerytouch','smartnotification','sparkline'], 
      exports : 'jQuery' 
     } 
    } 
}); 

define('jquery-private', ['jquery'], function (jq) { 
    return jq.noConflict(true); 
}); 
require([ 
    'jquery', 
    'jqueryui', 
    'jquerytouch', 
    'bootstrap', 
    'smartnotification', 
    'jasviswidget', 
    'jqueryeasypiechart', 
    'sparkline', 
    'jqueryvalidate', 
    'jquerymaskinput', 
    'select', 
    'bootstrapslider', 
    'jquerymbbrowser', 
    'fastclick', 
    'demo', 
    'appDash' 
], function($){ 
    $(document).ready(function(){ 
     pageSetup(); <<<<< I want to Load this method on on page load 
    }); 
    console.log($); 
}); 

appDash.js

當應用程序是開始(第一個請求)是工作正常沒有錯誤發現.. 但當我刷新(第二個請求)上面有一個錯誤。

+0

請向我們展示您的RequireJS配置。 – Louis

+0

任何人都可以幫助我。請:D – user2582794

+0

評論者在編輯帖子時沒有收到自動通知。我查看了你的配置並注意到一個未使用的jquery-private模塊。你真的沒有使用它,或者你忘了複製一部分配置?此外,是jQuery加載*只*由RequireJS在您的設置? – Louis

回答

1

你會得到這個錯誤,因爲appDash包含一個jQuery擴展。

拿這個代碼塊了appDash.js

$.fn.extend({ 

    //pass the options variable to the function 
    jarvismenu : function(options) { 
     ... rest of code 
    } 
}); 

把它放在它自己的如「賈維斯 - 菜單ext.js」的文件。

添加到您的路徑和墊片。

'賈維斯菜單-EXT': '庫/賈維斯菜單-EXT',

'賈維斯菜單-EXT': 'jQuery的'],

而且它添加到您的需要在app.js中調用。

require([ 
    'jquery', 
    'jqueryui', 
    'jquerytouch', 
    'bootstrap', 
    'smartnotification', 
    'jasviswidget', 
    'jarvis-menu-ext' <<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    'jqueryeasypiechart', 
    'sparkline', 
    'jqueryvalidate', 
    'jquerymaskinput', 
    'select', 
    'bootstrapslider', 
    'jquerymbbrowser', 
    'fastclick', 
    'demo', 
    'appDash' 
], function($){ ... 
+1

什麼不同,我把它放在appDash.js和jarvis-menu-ext.js?我認爲這兩個文件是相同的只是不同的名稱。我錯了嗎? – user2582794