我是Backbone.js和Require.js的新手我试图从服务器获取数据并将其存储在我的骨干模型中。问题是数据没有填充模型。
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())时得到 - 对象{id:“1Uw6ZkbsAH8”, video_id:“”,video_name:“”}。我做错了什么?
答案 0 :(得分:2)
在调用fetch
后立即完成。 fetch
向服务器发出数据的asycnhronous请求。即使在网络请求完成之前,您的日志记录也会立即执行。这是基于事件的编程的难点之一。
尝试在console.log
回调中调用success
。
video.fetch ( {
success: console.log(video.toJSON());
}
);