我正在试图弄清楚如何通过它的id获取模型并显示相同的视图。我已经设置了我的路由器来获取id的数据。我尝试了很多,但无法找到解决方案。对此有任何想法将不胜感激。
collection.js文件:
app.Routers.socialRouter = Backbone.Router.extend({
routes: {
"" : "homePage",
"make_friends/:id" : "userProfile",
},
userProfile: function() {
new app.Views.idView({ model: userCollections.get(id) });
}
});
new app.Routers.socialRouter();
Backbone.history.start();
router.js文件:
app.Views.idView = Backbone.View.extend({
el: $("#app"),
template: _.template($('#public-profile').html()),
initialize: function(){
this.render();
},
render: function () {
console.log(this.model); /// undefined
this.$el.html(this.template( this.model.toJSON() ));
return this;
}
});
view.js文件:
[
{
"id": "1",
"firstname": "Abc",
"lastname": "Xyz"
},
{
"id": "2",
"firstname": "Klm",
"lastname": "Opq"
}
]
来自网址的JSON数据:
use std::iter;
fn main() {
let val = 5u64;
let mut iter = iter::repeat(&val);
let res = iter.next();
}
答案 0 :(得分:0)
要回答您的问题,您会在回调中收到路由参数的值。您可以将其传递给视图并在其初始化
中访问它app.Routers.socialRouter = Backbone.Router.extend({
routes: {
"" : "homePage",
"make_friends/:id" : "userProfile",
},
userProfile: function(id) {
// no reference?
new app.Views.idView({ collection: userCollections, modelId: id });
}
});
如果您的查看实际上是项目视图,则无需传递整个集合,您只需在路由器中获取集合后执行以下操作。
new app.Views.idView({ model: userCollections.get(id) });
更好的是,您的视图不需要集合,您只需要一个带有返回模型信息的终点的模型实例
答案 1 :(得分:0)
userCollections.get(id)应该有效。
考虑到Id是模型的属性,您也可以在下面找到模型。
userCollections.find(function(model){return model.get('id')=== Id;});