【发布时间】:2013-08-07 23:12:45
【问题描述】:
由于某种原因,我的代码总是返回相同的模型,即使在我在 listView 页面中选择项目后我可以看到传入了正确的 id。
// main.js (relavent function)
venueDetails: function (id) {
// here, id is correct
var venue = new Venue({_id: id});
venue.fetch({success: function(){
// here, the id of venue is changed for some reason
console.log(venue.id);
$("#content").html(new VenueView({model: venue}).el);
}});
this.headerView.selectMenuItem();
},
模型,
// model.js (relavent model)
var base = 'http://localhost:3000';
window.Venue = Backbone.Model.extend({
urlRoot: base+"/venues",
idAttribute: "_id",
});
window.VenueCollection = Backbone.Collection.extend({
model: Venue,
url: base+"/venues?populate=true"
});
在图片中,您可以看到model.id与url中的内容不同的地方
编辑:添加路由器映射
var AppRouter = Backbone.Router.extend({
routes: {
"" : "home",
<!-- venues -->
"venues" : "venueList",
"venues/page/:page" : "venueList",
"venues/add" : "addVenue",
"venues/:id" : "venueDetails",
【问题讨论】:
-
您看到正确的 GET 调用和响应了吗?尝试使用 firebug 中的网络面板。
-
hmm,当它向服务器 api 发出请求时,它传入的 id 不正确。是否有一些方法我应该重写以查看它可能会替换 id 的位置?
-
模型初始化后使用console.log(venue.id)即可。是不是打印了错误的id?同时粘贴路由器映射。
标签: jquery rest twitter-bootstrap backbone.js