【问题标题】:Unable to get an attribute in Parse.com无法在 Parse.com 中获取属性
【发布时间】:2012-09-19 09:46:38
【问题描述】:

我正在 Parse.com 中编写一个应用程序,并且我定义了一个“AppState”对象,它存储了我通过应用程序传递的各种常量和值(有点像 PHP 会话)。

在某一时刻,我试图从 AppState 对象中读取一个值,虽然它似乎已设置,但我没有取回该值。

AppState 定义为:

var AppState = Parse.Object.extend("AppState", {
    defaults: {
        folderShown: '',
        folderSpecial: 'all',
        showCaption: false
    }
});

然后我必须启动应用程序:

var state = new AppState;
new AppRouter;
new AppView;

在 AppRouter 中,我正在设置“路由”的值:

var AppRouter = Parse.Router.extend({
    routes: {
        "viewPage/:object_id": "viewPage",
    },
    initialize: function(options) {
    },
    viewPage:   function(object_id) {
        state.set("currentPage", object_id);
        state.set("route", "view");
    }
});

在应用程序视图中,我有:

var AppView = Parse.View.extend({
  initialize:   function() {
      this.render();
  },
  render:  function() {
    console.log(state);
    console.log(state.get('route'));
  }
});

第一个控制台日志显示状态,属性'route'设置为'view':

attributes: Object
  folderShown: ""
  folderSpecial: "all"
  route: "view"
  showCaption: false

第二个控制台日志显示“未定义”。

如果我获得默认属性之一,例如“folderSpecial”,它会读取正确的值。

我做错了什么?

【问题讨论】:

  • 谢谢,但我不认为这只是一个控制台问题,因为随后的行为就好像该值确实是未定义的。
  • 你说在AppRouter中,我正在设置“route”的值。 -- 我们可以看看这段代码吗?
  • 你在哪里调用 History.start?在新的 AppView 之后?
  • 是的,在新的 AppView 之后我有 Parse.history.start();

标签: javascript jquery backbone.js parse-platform


【解决方案1】:

在调用Backbone.history.start() 时评估路由器中定义的路由。 来自http://backbonejs.org/#Router

在页面加载期间,在您的应用程序完成创建所有 它的路由器,一定要调用 Backbone.history.start(),或者 Backbone.history.start({pushState: true}) 路由初始 URL。

这意味着您的状态对象只会在调用 Backbone.history.start() 时更新:在您的情况下,在您的视图初始化之后。

new AppView 之前调用Backbone.history.start 应该可以解决您的问题。

模拟您的问题的小提琴:http://jsfiddle.net/nikoshr/LWh2P/ 还有一个修改版:http://jsfiddle.net/nikoshr/LWh2P/1/

【讨论】:

  • 谢谢,这真的很有帮助。
【解决方案2】:

感谢 nikoshr 告诉我这与 Parse.history.start() 有关。将其移至新 AppView 解决问题之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多