好的,我已经通过此处发布的另一个问题的答案解决了这个问题,但我正在尝试做更多的事情。我的主干设置如下,
var MyModel= Backbone.Model.extend();
var MyCol = Backbone.Collection.extend({
model : MyModel,
url: '/GetData/2',
parse: function(response) {
return response;
}
});
var stuff = new MyCol;
stuff.fetch({
success: function (collection, response) {
console.log(response);
}
})
现在这段代码完全可以工作了。现在解释一下,URL
是用PHP Slim
设置的,它返回JSON编码数据
,其中将有四个key/pair
分组,例如:
<code> { id; XX, data: XX, another:XX, last:YY } </code>
该数据是从数据库接收的,现在我应该如何动态地执行此操作?我的意思是,在我的集合中的 URL
' 行上,它传递 2
作为当前 ID
。我怎样才能让backbone
调用我需要的每个ID
,目前数据库中有6
列表。所以我需要它显示/控制台日志
(当前用于测试)所有6
输入,那么我如何将ID
输入更改为 1-6?我应该只使用
for loo
吗?我真的想要一些不需要更改的东西,如果从数据库中删除列表或添加更多列表的话?
最终目标是将此 JSON 数据
加载到我的 Backbone View
中,这是 的模板
>表单。
欢迎所有帮助,
谢谢
格伦
P.S 抱歉,如果我的拼写错误,我有诵读困难,也可能没有正确解释事情,所以请告诉我,我会改进我的措辞,谢谢。
编辑
这就是我现在正在处理的::
var AdminModel = Backbone.Model.extend({
defaults: {},
urlRoot: '/GetData'
});
var AdminColModel = Backbone.Collection.extend({
model : AdminModel,
url: '/',
parse: function(response) {
//console.log(response);
return response;
}
});
var stuff = new AdminColModel;
stuff.fetch({
success: function (collection, response) {
console.log(collection);
}
})
控制台根本不记录任何内容?但是 PHP 已设置且工作正常,因此当您转到 /getData
时,您将获得数据库中所有行的完整列表。当您查看/getData/X <- X 是 ID 号时,将仅返回该行 ID 数据。
格伦
最佳答案
您不应在产品系列级别对产品系列中的每个模型提出单独的请求。默认情况下,您为集合设置的 URL 应请求所有模型。所以不是这样:
'/GetData/2'
它应该是:
'/GetData'
然后在服务器端,您应该确保 GetData
操作返回所有 MyModels
。
然后,您可以为 GetData
编写重写,该重写采用参数来返回单个模型或过滤结果。您将对单个模型检索特别感兴趣,它应该是模型级别使用的 URL。事实上,您已经有了这个操作,因为您正在使用它(错误地)来检索集合。这是与 /GetData/2
URL 关联的操作。此操作应该是您在模型内调用 fetch 时使用的操作,而不是集合。
希望这有帮助。
帖子编辑
添加一些代码来提供帮助。
var AdminModel = Backbone.Model.extend({
urlRoot: '/GetData'
});
var AdminCollection = Backbone.Collection.extend({
model : AdminModel,
url: '/GetData'
});
var wholeCollection= new AdminCollection();
// the fetch method on the collection uses the AdminCollection.url property
wholeCollection.fetch({
success: function (collection) {
console.log(collection); // will output collection object to console
}
});
// this model does not exist in any collection
var modelOutsideCollection = new AdminModel({}, { id: "2" });
// because the model is not in a collection, fetch uses the AdminModel.urlRoot proeprty
modelOutsideCollection.fetch({
success: function (model) {
console.log(model); // outputs a single model with id of 2 to collection
}
});
关于javascript - 将我的 'IDs' 动态加载到我的 Backbone Collection 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22836706/