javascript - 来自服务器的 Json 数据未填充主干模型

标签 javascript backbone.js requirejs

我是 Backbone.js 和 Require.js 的新手 我正在尝试从服务器获取数据并将其存储在我的 Backbone 模型中。问题是数据没有填充模型。

require.config({
paths:{
    jquery:"libs/jquery-1.7.1.min",
    underscore:"libs/underscore-min",
    backbone:"libs/backbone-min",
    models:"models",
    views:"views",
    collections:"collections"
},
shim:{
    "backbone":{
        "deps":["underscore","jquery"],
        "exports":"Backbone"
         },
        "underscore":{
             "exports":"_"
        }
     }
   });


 require (['routes'],function() {
      new Router ();
 });

模型

define (['jquery','underscore','backbone'],function($,_,Backbone){
Video = Backbone.Model.extend ({
    defaults:{
        video_id:'',
        video_name:'',
    },
    urlRoot:"/video",
});
});//end define

路由器

define(['backbone','models/Video'],function(Backbone){
 Router = Backbone.Router.extend({
    routes:{
        "/":"index",
    },
    initialize:function (){
        this.index ();
    },
    index:function ()
    {
        video = new Video ({id:"1Uw6ZkbsAH8"});
        video.fetch();
        console.log (video.toJSON());
    }
 }); 
});//end define

我检查了网络响应,我得到了“{video_id:1,video_name:test_backbone}”作为响应,但是当我使用 console.log (video.toJSON()) 时,我得到了 - Object {id: "1Uw6ZkbsAH8", video_id:“”,video_name:“”}。我做错了什么?

最佳答案

在您的代码中,日志记录是在调用 fetch 之后立即完成的。 fetch 向服务器发出异步请求以获取数据。即使在网络请求完成之前,您的日志记录调用也会立即执行。这是基于事件的编程的陷阱之一。

尝试在 success 回调中调用 console.log

video.fetch ( { 
    success: console.log(video.toJSON()); 
    } 
);

关于javascript - 来自服务器的 Json 数据未填充主干模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15046893/

相关文章:

javascript - jQuery UI 弹跳效果对齐 Firefox 和 IE8 中剩余的元素

javascript - 防止 :blank tab from opening, 应该立即将用户直接发送到指定的 URL

javascript - Backbone.js 和 pushState

knockout.js - 在 Durandal/SPA 应用程序中配置 Knockout 验证

javascript - RequireJS - 在需求流和内联中加载 AMD 模块

javascript - 基于case语句动态打开 Accordion

php - 当脚本使用 PHP 变量时导出 javascript

javascript - 重写 Backbone 的 URL 函数以从本地存储中获取数据

backbone.js - 获取更改事件的更改属性

javascript - 使用 socket.io 的单页应用程序中的特定于部分的监听器