【发布时间】:2012-01-12 10:14:20
【问题描述】:
我正在尝试了解 KnockoutJS 是否适用于我的应用程序。我的数据模型(简化)如下:
function topic(data) {
this.id = data.id;
this.queries = ko.observableArray([]);
}
function query(data) {
this.id = data.id;
this.text = data.text;
this.searcher = data.searcherId;
this.postings = ko.observableArray([]);
}
function posting(data, query) {
this.documentId = data.docid;
this.rank = data.rank;
this.snippet = data.snippet;
this.score = data.score;
this.query = query;
this.document = null;
}
function document(data, topic) {
this.id = data.id;
this.url = data.url;
this.topic = topic;
}
对于给定的topic,我有一个或多个query 实例。每个查询都包含一个posting 实例列表。每个posting 指的是一个文档。只要posting 实例属于不同的query 实例,就可以有多个posting 引用给定的document。
如果posting 引用一个新文档(尚未被任何query 检索到)我想创建一个新实例;如果document 已经存在(ID 是唯一的),我想重新使用它。
我可以看到一些可能的替代方案来构建服务器返回的 JSON 数据:
- 序列化过帐时,首先序列化所有文档的列表,并使用它们更新主文档列表。然后,发送引用文档 ID 的帖子。
- 将每个文档完全序列化为发布的属性,然后确定该条目是否多余。将非冗余条目添加到主列表。
序列化数据的合理模式是什么?是否有一些映射插件的魔法可以简洁地表达这一点?我可以控制生成 JSON 的服务器,并且可以以任何有意义的方式构建它。
谢谢,
基因
【问题讨论】:
-
基因,这个问题相当广泛和主观。我不清楚我们可以客观回答哪些具体问题。
-
嗯,我一直在寻找关于成语和最佳实践的指导。我实施了策略 #1,因为我可以控制服务器。
标签: javascript knockout.js knockout-mapping-plugin