2013-09-03 3 views
0

Я разрабатываю приложение с 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 из моих моделей?

+0

С помощью функции 'initialize' от маршрутизатора вы имеете в виду Backbone.Router? Вы уверены, что эта функция инициализации выполняется после срабатывания события 'deviceready' телефона? –

+0

Да, его в Backbone.Router. Я не запускаю deviceready - как мне это сделать? – user1716672

+0

Вы должны добавить прослушиватель событий к событию 'deviceready'. Внутри слушателя вы должны запустить базовый маршрутизатор. Таким образом, вы начинаете использовать API телефонных разговоров, когда все будет готово. 'document.addEventListener (" deviceready ", function() { Backbone.history.start(); }, false);' –

ответ

2

Вы должны добавить прослушиватель событий к событию deviceready. Внутри слушателя вы должны запустить базовый маршрутизатор. Таким образом, вы начинаете использовать API телефонных разговоров, когда все будет готово.

document.addEventListener("deviceready", function(){ 
    Backbone.history.start(); 
}, false); 
Смежные вопросы