表示树数据的骨干集合
我想将 json 数据以树的形式加载到 Backbone Collection 中。我不能这样做。谁能解释我做错了什么?
我非常简单的模型:
CTreeDataItem = Backbone.Model.extend(
{
});
CTreeDataItems = Backbone.Collection.extend(
{
model: CTreeDataItem
});
和我的负载尝试:
var treeJs =
[
{ id: "tvRoot", title: 'Root', cssClass: 'root',
items: [
{ id: "ti1", title: 'Item1', cssClass: 'item',
items: [
{ id: "ti11", title: 'SubItem11', cssClass: 'subitem'},
{ id: "ti12", title: 'SubItem12', cssClass: 'subitem'}]},
{ id: "ti2", title: 'Item2', cssClass: 'item',},
{ id: "ti3", title: 'Item3', cssClass: 'item',
items: [
{ id: "ti31", title: 'SubItem31', cssClass: 'subitem'},
{ id: "ti32", title: 'SubItem32', cssClass: 'subitem'},
{ id: "ti33", title: 'SubItem33', cssClass: 'subitem'}]}]
}];
this.TreeData = new CTreeDataItems();
this.TreeData.add(treeJs);
I want to load json data in form of a tree into Backbone Collection. I can't do this. Can anyone explain what I'm doing wrong?
My very simple model:
CTreeDataItem = Backbone.Model.extend(
{
});
CTreeDataItems = Backbone.Collection.extend(
{
model: CTreeDataItem
});
And my load attepmt:
var treeJs =
[
{ id: "tvRoot", title: 'Root', cssClass: 'root',
items: [
{ id: "ti1", title: 'Item1', cssClass: 'item',
items: [
{ id: "ti11", title: 'SubItem11', cssClass: 'subitem'},
{ id: "ti12", title: 'SubItem12', cssClass: 'subitem'}]},
{ id: "ti2", title: 'Item2', cssClass: 'item',},
{ id: "ti3", title: 'Item3', cssClass: 'item',
items: [
{ id: "ti31", title: 'SubItem31', cssClass: 'subitem'},
{ id: "ti32", title: 'SubItem32', cssClass: 'subitem'},
{ id: "ti33", title: 'SubItem33', cssClass: 'subitem'}]}]
}];
this.TreeData = new CTreeDataItems();
this.TreeData.add(treeJs);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试用
Model
表示树作为节点,每个节点包含其子节点的Collection
:编辑 2011-05-18: 如果您想要展平树并维护对树中每个节点所具有的父节点的引用:
希望这就是您所追求的。
Try representing the tree with
Model
as the node and each node containing aCollection
of its child nodes:EDIT 2011-05-18: If you want to flatten the tree and maintain a reference to the parent that each node had in the tree:
Hope that's what you're after.
您需要使用 Backbone.Model parse 方法,该方法用于在获取数据之前解析数据传递给模型。您可以使用它将树的每个级别上的数据转换为代表这些集合上的项目的集合和模型。
然后,在保存时,您必须重写模型上的
toJSON
方法,以按照接收数据的方式返回数据的 json 表示形式。随后 Backbone.sync 使用它来将数据发送回服务器。默认情况下,它仅返回Model.attributes
的_.clone
,并且您也希望所有 Collections 和 CollectionModel 都在其中。皆为骨气万岁! :)
You need to use Backbone.Model parse method which is used to parse data before it gets passed to a model. You can use it to turn data on each level of your tree to Collections and Models representing items on these collections.
Then when saving you'd have to override the
toJSON
method on the Model to return the json representation of your data the same way you receive it. It is later on used by Backbone.sync to send the data back to the server. By default it returns only_.clone
of yourModel.attributes
and you want all the Collections and CollectionModels in there as well.All hail the backbone! :)