2013-08-27 9 views
0

Создайте приложение, используя jquery mobile, backbone.js, marionette.js и require.js. Am в настоящее время пытается использовать JQuery мобильной страницу загрузки виджет в представлении, но я получаю эту ошибкуjquery мобильный виджет загрузки страницы не работает

Uncaught TypeError: Cannot read property 'loader' of undefined 

Точки начала для моего приложения выглядит следующим образом

require.config({ 
    paths: { 
     jquery: 'vendor/jquery-1.9.1.min', 
     'jquery.mobile': 'vendor/jquery.mobile-1.3', 
     'jquery.mobile-config': 'vendor/jquery.mobile.config', 
     underscore: 'vendor/backbone/underscore', 
     backbone: 'vendor/backbone/backbone', 
     marionette: 'vendor/marionette/backbone.marionette', 
     text: 'vendor/text' 
    }, 

    shim: { 
     underscore: { 
      exports: '_' 
     }, 

     backbone: { 
      exports: 'Backbone', 
      deps: ['jquery','underscore'] 
     }, 

     'jquery.mobile-config': ['jquery'], 
     'jquery.mobile': ['jquery','jquery.mobile-config'], 

     marionette: { 
      exports: 'Backbone.Marionette', 
      deps: ['backbone'] 
     } 
    } 
}); 

require(['jquery','app', 'jquery.mobile'], function ($, App) { 
    $(function() { 
     App.start(); 
    }); 
}); 

файлового jquery.mobile.config выглядит следующим образом

define(['jquery'], function ($) { 
     $(document).bind("mobileinit", function() { 
      $.extend( $.mobile , {autoInitializePage: false}); 
      $.mobile.ajaxEnabled = false; 
      $.mobile.linkBindingEnabled = false; 
      $.mobile.hashListeningEnabled = false; 
      $.mobile.pushStateEnabled = false; 
     }); 
}); 

и вид выглядит так

define(['jquery', 'marionette','text!templates/login.html'], function ($, marionette, ViewTemplate) { 

    'use strict'; 

    var LoginView = marionette.ItemView.extend({ 

     template: _.template(ViewTemplate), 

     events: { 
      'click #login-btn': 'login' 
     }, 

     login: function (event) { 

      $.mobile.loading('show', { 
       text: 'Please wait', 
       textVisible: true 
      }); 
     } 
    }); 

    return LoginView; 
}); 

В чем может быть проблема?

+0

вы можете настроить скрипку – Akki619

+0

В первую очередь, я думаю, что это может быть причиной конфликта jquery, попробуйте этот jQuery.noConflict(); обратитесь к http://api.jquery.com/jQuery.noConflict/ –

+0

@SAM Библиотека marionette.js гарантирует, что конфликты с переменной $ – MrFoh

ответ

0

Может быть DOM еще не готов, jqm не загружен еще попробовать использовать что-то подобное (или эквивалент):

jQuery(document).ready(function() { 
    viewModel.login(); 
}); 
Смежные вопросы