2013-08-27 47 views
0

上午使用jquery mobile,backbone.js,marionette.js和require.js構建應用程序。 我目前正在嘗試使用jQuery Mobile的頁面加載插件的觀點,但我得到這個錯誤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(); 
});