【问题标题】:relational models and variable references within templates using backbone and marionette使用主干和牵线木偶的模板中的关系模型和变量引用
【发布时间】:2012-10-06 21:45:31
【问题描述】:

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

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>

任何想法最好的方法来处理这个?我想避免在内存中重复内容。

结果应该是:

Sam 和 Violet 是朋友

山姆是弗雷德的朋友

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

这是我尝试过的:

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

【问题讨论】:

  • 请向我们展示您对骨干关系的尝试。
  • 当然 - 我将该代码添加到底部 - 当我在之后对模型对象进行字符串化时,它不会显示相关的事物数据:(

标签: backbone.js marionette backbone-relational


【解决方案1】:

啊 - 我想通了 -

它正在寻找一个 ID 字段来映射您所拥有的任何密钥 - 所以我将 uri 重命名为 id 并且一切都很好。太糟糕了,你不能明确告诉它映射到哪个字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多