![](/img/trans.png)
[英]onclick() function to fetch button value to text box working only one time
[英]Fetch collection only one time
我有一个从parse.com提取并由view呈现的用户列表。人们单击项目列表后,我在URL中插入了objectid。 在路由器中,我制作了一个“ home”函数,该函数从集合中获取并调用视图以呈现。函数“ userdetails”在URL中逐个视图地捕获objectid先前的插入,并使用它来从集合中获取。 问题是:如何将集合传递给该函数用户详细信息?我不想再次获取。
home: function() {
var self=this;
console.log("inrouterhome");
var utenti = new Usercollection();
utenti.fetch({
success: function(object) {
var page=new Homelistuser({model:object});
self.changePage(page);
},
error: function(amici, error) {
// The collection could not be retrieved.
}
});
},
userDetails: function (objectId) {
HERE I WANNA USE OBJECTID TO MAKE A GET FROM COLLECTION FETCHED IN HOME
},
看来这可能是一个范围界定问题。 尝试这个
var Models = {};
var AppRouter = Backbone.Router.extend({
home: function() {
var self=this;
console.log("inrouterhome");
Models.utenti = new Usercollection();
Models.utenti.fetch({
success: function(object) {
var page=new Homelistuser({model:object});
self.changePage(page);
},
error: function(amici, error) {
// The collection could not be retrieved.
}
});
},
userDetails: function (objectId) {
//Models.utenti should exist as long as home came first,
// may want to write a condition that check to see if it exists and if not do fetch.
}
});
正如@abritez提到的那样,这可能是一个范围界定问题,即userDetails方法无法访问实例化的集合。 @abritez的解决方案可以解决此问题,但是如果用户刷新页面或直接访问路由,则不会加载该集合。
如果两个路由之间都使用了集合,请考虑在运行时获取它,并在准备就绪时使用侦听器:
var Models = {};
Models.utenti = new Usercollection();
Models.utenti.fetch();
var AppRouter = Backbone.Router.extend({
home: function() {
var utentiLoaded = function(object) {
var page = new Homelistuser({model:object});
this.changePage(page);
}
this.listenTo(Models.utenti, 'reset', utentiLoaded);
this.listenTo(Models.utenti, 'error', function(amici, error) {
// The collection could not be retrieved.
});
if (Models.utenti.any()) {
utentiLoaded(Models.utenti);
}
},
userDetails: function(objectId) {
var utentiLoaded = function(object) {
}
this.listenTo(Models.utenti, 'reset', utentiLoaded);
this.listenTo(Models.utenti, 'error', function(amici, error) {
// The collection could not be retrieved.
});
if (Models.utenti.any()) {
utentiLoaded(Models.utenti);
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.