我是新使用RequireJS,我有一个问题,这是错误:

未捕获的TypeError:对象[object Object]没有方法'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

    $.fn.extend({

        //pass the options variable to the function
        jarvismenu : function(options) { << this jarvis menu variable which cannot load
            ............
            ............
           }
    });


$(document).ready(function() {

    if (!null) {
        $('nav ul').jarvismenu({
            accordion : true,
            speed : $.menu_speed,
            closedSign : '<em class="fa fa-expand-o"></em>',
            openedSign : '<em class="fa fa-collapse-o"></em>'
        });
    } else {
        alert("Error - menu anchor does not exist");
    }

});

function pageSetUp() { << i want to call this code but when i call this method it call jquery ready above too.., the problem is he cannot read jarvismenu variable  from jarvis menu above 
// some code
}

当应用程序启动时(第一个请求)工作正常没有发现错误..但是当我刷新(第二个请求)时,上面有一个错误。

===============>>#1 票数:1

您收到该错误是因为appDash包含jquery扩展名。

从appDash.js中取出这段代码

$.fn.extend({

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

把它放在它自己的文件中,例如'jarvis-menu-ext.js'。

将其添加到您的路径和垫片。

'jarvis-menu-ext':'libs / jarvis-menu-ext',

'jarvis-menu-ext':['jquery'],

还可以将其添加到app.js中的require调用中。

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

  ask by user2582794 translate from so

未解决问题?本站智能推荐:

1回复

RequireJS&Jquery - 一个文件中有多个模板?

我正在使用require.js将一些模板文件加载到我的应用程序中,如下所示: 然后,使用Backbone,我正在引用模板,如下所示: 拥有单独的模板文件有点烦人,我想将所有模板组合成一个html文件并提取单个元素。 我试过这个: 模板组合的html文件如下所示:
1回复

无法使用RequireJS加载Inview jQuery插件

我正在尝试在我的应用程序中使用inview插件,该插件使用RequireJS加载脚本,并使用Almond构建/优化。 我收到控制台错误: 这似乎是由于需要填充的垫片添加到了inview文件的末尾: 我的require配置如下: 任何帮助,不胜感激!
1回复

requirejs优化器无法在jquery中加载

我正在优化我的requirejs应用程序以及backbone和jquerymobile,以下是我的文件结构: 在控制台中,我试图运行到ff命令: 我确保路径定义良好并正常工作,除非出现此错误(这是我在运行命令时得到的): 非常感谢!
1回复

jQuery验证未加载requirejs

我在RequireJS中有一个主要模块: 加载此页面时,出现JavaScript错误: TypeError:$(...)。validate不是函数varvalidator = $(“ form”)。validate(); ** 我现在为什么不呢? 所有脚本均已加载:
1回复

requirejs jQuery和Boostrap加载顺序

嗨,我有一个有关加载bootstrap和js的问题: 我有此代码: 会正确加载文件,但顺序不正确。 它在jquery之前加载bootstrap并导致错误: 错误:Bootstrap的JavaScript需要jQuery
1回复

jQuery处理函数+ requireJs

我创建了一个requireJs模块,其中已经放置了所有功能: 在init部分中,我在调整大小时定义了一个处理程序Jquery,它调用此对象上的函数 我以这种方式尝试: 但是它不起作用,我发现的唯一解决方案是下面的解决方案,但它不适用于IE。 您有什么建议或更好的解决
1回复

使用requirejs加载jQuery验证

我在用requirejs挣扎。 我定义了以下jquery验证自定义插件模块: 验证-addon.js 我的requirejs配置文件: config.js 我在这样的mvc用户注册视图上使用这些模块: register.cshtml 我面临的问题有点奇
1回复

使用RequireJS + jQuery加载jCarousel

我正在尝试使用RequireJS加载一个名为jCarousel的Java插件。 我的项目结构如下: 我使用的是shim配置,因此我首先像这样加载RequireJS: 然后在app.js中,我具有RequireJS的此配置: 当我使用此框架加载页面时,所有脚本似乎都已加载
1回复

jQuery无法与RequireJS一起使用

我知道,我的问题是如此的相似,这一个 ,但我有同样的问题,并没有对我的解决方案的工作。 我的目录结构如下: 我的HTML文件是这样的: 我也试图在config.js文件中进行配置,如下所示: 然后HTML文件就像: 在我的HTML文件的最下方,有以下行:
1回复

使用带有requirejs的stickytableheaders无法加载

我正在尝试用requirejs加载stickytableheaders ,但似乎无法使其正常工作。 总是说找不到。 我已经确认它是在使用脚本之前先加载该脚本的。 任何想法为什么$("table").stickyTableHeaders(); 会抛出undefined is not a