骨干+ jQuery Mobile的+ RequireJS [英] Backbone + JQuery Mobile + RequireJS
本文介绍了骨干+ jQuery Mobile的+ RequireJS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个很大的proglem与RequireJS。这种配置随机。我不知道为什么,一旦它的工作原理,一旦它不:
requirejs.config({
的baseUrl:'JS',
urlArgs:胸围=+(新的Date())的getTime()
路径:{
jQuery的:库/ jQuery的/ jQuery的-1.10.2.min',
强调:库/下划线/下划线民',
主干网:库/骨干网/骨干网民,
提线木偶:库/木偶/ backbone.marionette',
科尔多瓦:库/科尔多瓦/科尔多瓦-1.9.0,
jquerym:库/ jQuery的移动/ jquery.mobile-1.4.0
}, 垫片:{
jQuery的:{
DEPS:[]
},
jquerym:{
DEPS:['jQuery的'],
出口:jQuery的
},
强调:{
DEPS:[],
出口:_
},
骨干:{
DEPS:['jQuery的','底线'],
出口:骨干
},
提线木偶:{
DEPS:['jQuery的','底线','骨干']
}
},
优先权:['jquery的','jquerym']
});
需要(['应用','jQuery的','jquerym'],功能(APP){
(文档)$ .bind(mobileinit功能(){
$ .mobile.ajaxEnabled = FALSE;
$ .mobile.linkBindingEnabled = FALSE;
$ .mobile.hashListeningEnabled = FALSE;
$ .mobile.pushStateEnabled = FALSE;
//它被更换时,从DOM删除页面
$('DIV [数据角色=页]')。生活(pagehide',函数(事件,UI){
$(event.currentTarget)一个.remove();
});
}); 的console.log('jQuery的版本+ $()的jQuery +'装');
App.initialize();
});
解决方案
在移动-INIT-事件之前jQuery Mobile的加载才能被正确地触发的约束。
尝试使用这样的:
规定([jQuery的],功能($){
$(文件)。一(mobileinit功能(){
//设置您的配置和事件绑定
$ .mobile.ajaxEnabled = FALSE;
$ .mobile.linkBindingEnabled = FALSE;
$ .mobile.hashListeningEnabled = FALSE;
$ .mobile.pushStateEnabled = FALSE;
//它被更换时,从DOM删除页面
$('DIV [数据角色=页]')。生活(pagehide',函数(事件,UI){
$(event.currentTarget)一个.remove();
});
}); 需要([应用程序,jquerym],功能(应用程序,JQM){
/ *与JQM在这里做的东西,如果你想一样,如果关闭jqm.initializePage()* /
App.initialize();
});
});
I am having a big proglem with RequireJS. This configuration works randomly. I dont know why, once it works and once it doesn't:
requirejs.config({
baseUrl: 'js',
urlArgs: "bust=" + (new Date()).getTime(),
paths: {
jquery: 'libs/jquery/jquery-1.10.2.min',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-min',
marionette: 'libs/marionette/backbone.marionette',
cordova: 'libs/cordova/cordova-1.9.0',
jquerym: 'libs/jquery-mobile/jquery.mobile-1.4.0'
},
shim: {
'jquery': {
deps: []
},
'jquerym': {
deps: ['jquery'],
exports: 'jquery'
},
'underscore': {
deps: [],
exports: "_"
},
'backbone': {
deps: ['jquery', 'underscore'],
exports: 'Backbone'
},
'marionette': {
deps: ['jquery', 'underscore', 'backbone']
}
},
priority: ['jquery', 'jquerym']
});
require(['app', 'jquery', 'jquerym'], function (App) {
$(document).bind("mobileinit", function () {
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
// Remove page from DOM when it's being replaced
$('div[data-role="page"]').live('pagehide', function (event, ui) {
$(event.currentTarget).remove();
});
});
console.log('jQuery version ' + $().jquery + ' installed');
App.initialize();
});
解决方案
The Mobile-Init-Event has to be bound before jQuery Mobile is loaded for it to be triggered correctly. Try using something like this:
require(["jquery"], function( $ ){
$( document ).one( "mobileinit", function() {
//Set your configuration and event binding
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
// Remove page from DOM when it's being replaced
$('div[data-role="page"]').live('pagehide', function (event, ui) {
$(event.currentTarget).remove();
});
});
require( [ "App", "jquerym" ], function( App, jqm ) {
/* Do Stuff with jqm here if you want like jqm.initializePage() if turned off */
App.initialize();
});
});
这篇关于骨干+ jQuery Mobile的+ RequireJS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文