【问题标题】:Access Phonegap API from Backbone.js model从 Backbone.js 模型访问 Phonegap API
【发布时间】:2013-09-04 23:10:44
【问题描述】:

我正在使用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?

【问题讨论】:

  • 路由器的initialize功能是指Backbone.Router吗?你确定这个初始化函数是在phonegap的deviceready事件触发后执行的吗?
  • 是的,它在 Backbone.Router 中。我没有触发 deviceready - 我该怎么做?
  • 您应该为deviceready 事件添加一个事件监听器。在侦听器内部,您应该启动主干路由器。这样,当一切准备就绪时,您就可以开始使用 phonegap API。 document.addEventListener("deviceready", function(){ Backbone.history.start(); }, false);
  • 谢谢你,成功了。你能说出答案吗?
  • 不客气。我将其发布为答案

标签: backbone.js cordova requirejs


【解决方案1】:

您应该为 deviceready 事件添加一个事件侦听器。在侦听器内部,您应该启动主干路由器。这样,当一切准备就绪时,您就可以开始使用 phonegap API。

document.addEventListener("deviceready", function(){ 
    Backbone.history.start(); 
}, false); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    相关资源
    最近更新 更多