سؤال

I am trying to switch to Zepto in my Marionette app, and I am trying to use this zepto plug-in (https://github.com/sudhirj/simply-deferred) to have support for jquery deffered. I am also using require.js, so far could't make it work and I still get this error:

Uncaught TypeError: Object function (selector, context){
    return zepto.init(selector, context)
  } has no method 'Deferred' 

and this is what my require js file looks like:

require.config({
  paths: {
    'backbone': 'lib/backbone',
    'text': 'lib/text',
    'underscore': 'lib/underscore',
    'bootstrap' : 'lib/bootstrap',
    'marionette' : 'lib/backbone.marionette',
    'localStorage' : 'lib/backbone.localStorage',
    'less' : 'lib/less',
    'Email' : 'models/email',
    "Emails" : 'collections/emails',
    "FormView" : 'views/FormView',
    "EmailsView" : 'views/EmailsView',
    "EmailView" : 'views/EmailView',
    "NoEmailView" : 'views/NoEmailView',
    "FormView" : 'views/FormView',
    "MyApp" : 'app',
    "parseEmail" :  "parsing/parseEmail",
    "LabelView" : "views/LabelView",
    'socketio': '../socket.io/socket.io',
    "zepto" : 'lib/zepto',
    "deferred" : 'lib/deferred'
  },
  shim: {
    'zepto':{
        deps: ["deferred"],
        exports: '$'
    },
    'underscore': {
      exports: '_'
    },
    'backbone': {
      deps: ["underscore", "zepto"],
      exports: 'Backbone'
    },
    'bootstrap' : {
        deps: ["zepto"]
    },
    'marionette' : {
      deps : ["backbone", "underscore", "zepto"],
      exports: 'Marionette'
    }
    'socketio': {
      exports: 'io'
    },
    },
});

require(

  [ "zepto",
    "underscore",
    "backbone",
    "less",
    "marionette",
    "MyApp",
    "socketio",
    "deferred",
  ],
  function($ , _, Backbone, less, Marionette, MyApp, io, Deferred) {
    Deferred.installInto($);

  });

I am really stuck here, any help would be much appreciated

هل كانت مفيدة؟

المحلول

I think deferred should be depending on Zepto, not the other way around:

shim: {
  'zepto':{
      exports: '$'
  },
  'deferred': {
      deps: ["zepto"],
  },

نصائح أخرى

I think 'deferred' may also need an export statement, the following worked for me..

  'deferred': {
    'deps': ['jquery'],
    'exports': 'Deferred'
  },
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top