apache cordova バージョン 2.7 を使用しているときに問題が発生しました。ブラウザでは、xampp から実行するとコードが正常に動作するようです。しかし、IOS にコンパイルしようとすると、うまくいきません。
この問題は、ファイルの読み込みに関するファイル プロトコルの制限により、ハンドルバー テンプレートと html ファイルの読み込みに使用される require.js テキスト プラグインに関連している可能性があると思います。
また、デバイスの準備完了イベントをリッスンしないことに関連していると思いますが、この設定で正しく行う方法がわかりません。
main.js コードは次のとおりです。
require.config({
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
handlebars: {
exports: 'Handlebars'
},
flipBook: {
deps: ['jquery']
},
touchSlider: {
deps: ['jquery']
}
},
paths: {
jquery: 'libs/jquery',
jquerymobile: 'libs/jquery.mobile',
underscore: 'libs/underscore',
backbone: 'libs/backbone',
handlebars: 'libs/handlebars',
cordovaios: 'libs/cordova-2.7.0',
text: 'libs/text',
flipBook: 'plugins/flipbook.min',
touchSlider: 'plugins/jquery.touchSlider.min'
}
});
// Includes File Dependencies
require(["cordovaios", "jquery", "backbone", "routers/router"], function(
cordova, $, Backbone, Router) {
// Set up the "mobileinit" handler before requiring jQuery Mobile's module
$(document).on("mobileinit", function() {
window.App = {
Models: {},
Collections: {},
Views: {},
Routers: {}
};
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$(document).on('pagehide', 'div[data-role="page"]', function(event, ui) {
$(event.currentTarget).remove();
});
$(document).on('pagebeforeshow', 'div[data-role="page"]', function () {
$.mobile.showPageLoadingMsg();
});
$(document).on('pageshow', 'div[data-role="page"]', function () {
$.mobile.hidePageLoadingMsg();
});
document.addEventListener('touchmove', function (e) {
e.preventDefault();
});
});
require(["jquerymobile"], function () {
// Instantiates a new Backbone.js Mobile Router
new Router();
});
});