Я разрабатываю приложение с backbone.js, require.js и Phonegap. У меня возникают проблемы с доступом к Apg Phonegap из модели. Мой файл index.html выглядит следующим образом:Доступ к API Phonegap из модели Backbone.js
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<link href="topcoat/css/topcoat-mobile-light.min.css" rel="stylesheet">
<link href="css/styles.css" rel="stylesheet">
<link href="css/pageslider.css" rel="stylesheet">
<script type="text/javascript" src="cordova.js"></script>
<script data-main="js/app" src="js/require.js"></script>
</head>
<body></body>
</html>
В функции инициализации маршрутизатора, я тестирование PhoneGap API:
initialize: function() {
window.localStorage.setItem("key", "some bloddy value");
var value = window.localStorage.getItem("key");
console.log('the value is');
console.log(value);
}
Это прекрасно работает, я могу получить, что значение установить и получить. У меня также есть статусная модель. Это выглядит следующим образом:
define(function (require) {
"use strict";
var $ = require('jquery'),
Backbone = require('backbone'),
LoginStatus = Backbone.Model.extend({
defaults: {
loggedIn: false,
api_key: null,
user_id: null
},
initialize: function() {
window.localStorage.setItem("key2", "some other value");
var value = window.localStorage.getItem("key2");
console.log('in init, the value is');
console.log(value);
},
});
return {
LoginStatus: LoginStatus
};
});
Когда я звоню Instantiate модель из функции инициализации маршрутизатора, я получаю ошибку:
Uncaught illegal access at file:///android_asset/www/js/app/models/loginstatus.js
Как я могу получить доступ к PhoneGap API из моих моделей?
С помощью функции 'initialize' от маршрутизатора вы имеете в виду Backbone.Router? Вы уверены, что эта функция инициализации выполняется после срабатывания события 'deviceready' телефона? –
Да, его в Backbone.Router. Я не запускаю deviceready - как мне это сделать? – user1716672
Вы должны добавить прослушиватель событий к событию 'deviceready'. Внутри слушателя вы должны запустить базовый маршрутизатор. Таким образом, вы начинаете использовать API телефонных разговоров, когда все будет готово. 'document.addEventListener (" deviceready ", function() { Backbone.history.start(); }, false);' –