我正在开发一个带有backbone.js,require.js和Phonegap的应用程序。我在从模型访问Phonegap api时遇到问题。我的index.html文件如下所示:
<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
};
});
当我从路由器的初始化函数调用实例化模型时,我收到错误:
Uncaught illegal access at file:///android_asset/www/js/app/models/loginstatus.js
如何从我的模型中访问Phonegap api?
答案 0 :(得分:2)
您应该向deviceready事件添加事件侦听器。在监听器内部,您应该启动骨干路由器。这样,当一切准备就绪时,您就开始使用phonegap API。
document.addEventListener("deviceready", function(){
Backbone.history.start();
}, false);