0

我正在搞乱骨干、木偶,想知道我应该如何处理关系模型。我的主要原因是我希望能够在同一个模板中使用两个不同相关模型中的数据。例如

Thing = Backbone.Model.extend({defaults: {label: null, uri: null}});
Things = Backbone.Collection.extend({model: Thing});

Relationship = Backbone.Model.extend({defaults: {subject: null, predicate: null, object: null}});
Relationships = Backbone.Collection.extend({model: Relationship});

var things = new Things([
    new Thing({label: 'Sam', uri: 'AAAA'}),
    new Thing({label: 'is friends with', uri: 'BBBB'}),
    new Thing({label: 'Violet', uri: 'CCCC'}),
    new Thing({label: 'Fred', uri: 'DDDD'})
]);

var relationships = new Relationships([
    new Relationship({subject: "AAAA", predicate: "BBBB", object: "CCCC"}),
    new Relationship({subject: "AAAA", predicate: "BBBB", object: "DDDD"})
]);

因此,关系数组只是保存对与 uri 属性匹配的 Things 数组中的项目的引用。我想在关系模板中做的是这样的(使用点表示法获取关联的事物模型数据):

<script type="text/template" id="relationship-template">
    <td><%= subject.label %></td>
    <td><%= predicate.label %></td>
    <td><%= object.label %></td>
</script>

有什么想法是处理这个问题的最佳方法吗?我想避免在内存中重复内容。

结果应该是:

山姆是紫罗兰的朋友

山姆是弗雷德的朋友

我看过 Backbone 关系,但没有任何运气让它工作:(

这是我尝试过的:

Relationship = Backbone.RelationalModel.extend({
    relations: [
        {
            type: Backbone.HasOne,
            key: 'subject',
            keySource: 'uri',
            keyDestination: 'subjectObject',
            relatedModel: Thing
        }
    ]
});
4

1 回答 1

0

啊——我明白了——

它正在寻找一个 ID 字段来映射您所拥有的任何内容 - 所以我将 uri 重命名为 id ,一切都很好。太糟糕了,您无法明确告诉它要映射到哪个字段。

于 2012-10-07T00:59:07.963 回答