javascript - 我的代码中出现意外行为

标签 javascript backbone.js

我有以下代码:

var myApp = {
  Models: {},
  Views:  {},
  Collections: {},
  Controllers: {},
  init: function() {
    new this.Controllers.Main();
    Backbone.history.start();
  }
}

myApp.Models.User = Backbone.Model.extend({
  idAttribute : '_id',
  url         : 'currentUser',
  initialize  : function() {
    this.fetch();
  }
});

myApp.Controllers.Main = Backbone.Controller.extend({
  initialize: function() {
    this.currentUser = new myApp.Models.User();
  },
  routes: {
    ''            : 'index',
  },
  index: function() {
    console.log('index called');
    console.log(this.currentUser);                 // shows the correct object
    console.log(this.currentUser.attributes);      // empty object ?
    console.log(this.currentUser.toJSON());        // empty object ?
    console.log(this.currentUser.get('name'));     // undefined ?
  }
});

$(function() {
  myApp.init();
});

我错过了什么?

最佳答案

这是一个异步问题。 Fetch 正在执行异步 Ajax 调用,它将返回,但尚未设置任何值。做类似的事情:

this.currentUser.bind("change:id", function(){
  //your console logs
});

当获取成功并且在模型上设置了 id 时,将调用日志。

关于javascript - 我的代码中出现意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919950/

相关文章:

javascript - 这个 fetch 调用问题

Backbone.js 多次触发 Collection 更改事件

javascript - 在 React-Native 中使用另一个文件进行 Realm 查询

javascript - 在页面到达 window.print() 之前执行函数

javascript - https 导致立即中止,而 http 正常

javascript - 将编码后的 php json 传递给 javascript

javascript - 如何将 Node.js、MongoDb 和 Backbone.js 组合在一个应用程序中?

javascript - 将 jQuery.pageless 与 turbolinks 结合使用

javascript - 如何使用 rhino 导入其他 javascript 文件

javascript - Backbone 初始化时不保留属性值