2012-10-06 32 views
0

我正在搞混合骨干,marionnette,并想知道我应该如何处理关系模型。我的主要原因是我希望能够在同一模板中使用两种不同相关模型中的数据。例如模板中的关系模型和变量引用使用骨干和牵线木偶

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属性。我理想中的相关模板做的就是这样的事情(使用点符号在相关的事情模型数据获取):

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

任何想法来处理这个问题的最好方法?我想避免重复内存中的东西。

的结果应该是:

萨姆是朋友,紫

山姆的朋友弗雷德

我看了骨干关系,但还没有任何运气得到它的工作:(

这是我的尝试:

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

请向我们介绍一下您尝试过的骨干关系。 –

+0

当然 - 我将代码添加到底部 - 当我在模拟对象之后对其进行了字符串处理时,它不会显示相关的事物数据: –

回答

0

啊 - 我想通了 -

它正在寻找一个ID字段来映射任何你在关键的地方 - 所以我把uri改名为id,一切都很好。太糟糕了,你不能明确地告诉它要映射到哪个字段。