2014-10-28 46 views
2

我正在使用Parse JS和Backbone,並嘗試打印來自Parse JS模型的值列表。這很容易,但我有objectId的問題。Parse.com - Parse.Object.extend(...)屬性

然後,我有...

var Thing = Parse.Object.extend('MyThings'); 
var Things = Parse.Collection.extend({ 
    model: Thing 
}); 

var collection = new Things(); 
collection.fetch({ 
    success: function(){ 
     App.start(collection.toJSON()); 
    } 
}); 

這是視圖...

ThingView = Backbone.View.extend({ 
    tagName: 'tr', 
    render: function(){ 
     this.$el.html(_.template($('#item-template').html(), this.model.attributes)); 
    } 
}); 

ThingListView = Backbone.View.extend({ 
    tagName: 'table', 
    addAll: function(){ 
     this.collection.forEach(this.addOne, this); 
    }, 
    render: function(){ 
     this.$el.empty(); 
     this.addAll(); 
    }, 
    addOne: function(item){ 
     var itemView = new ThingView({model: item}); 
     itemView.render(); 
     this.$el.append(itemView.el); 
    } 
}); 

這是一個模板(與Underscore.js)...

<script type="text/template" id="item-template"> 
    <td><%= id %></td> 
    <td><%= name %></td> 
    <td><%= color %></td> 
</script> 

屬性名稱和顏色顯示正確,但'id未定義'

任何想法?

+0

的視圖在哪裏?你有沒有設置idAttributes? – Muhaimin 2014-10-28 14:06:59

+0

#item-template封裝在(tagName:'tr')。名稱和顏色是屬性,但id是由Parse分配的objectId。這兩個屬性都顯示正確,但在控制檯顯示'ReferenceError:ID未定義' – wraham 2014-10-28 14:29:55

+0

我沒有看到['Parse.Object'文檔]中的'id'屬性的任何引用(https://parse.com/文檔/ JS /符號/ Parse.Object.html)。你確定你不是在談論'cid'嗎? – Dethariel 2014-10-31 16:36:17

回答

1

問題是ID不屬於屬性。它實際上生活在物體的根部。所以,你需要做的是通過this.model到_.template(),而不是this.model.attributes,然後在你的HTML相應的調整 - 如以下:

render: function(){ 
    this.$el.html(_.template($('#item-template').html(), this.model)); 
} 

<td><%= id %></td> 
<td><%= attributes.name %></td> 
<td><%= attributes.color %></td> 
+0

謝謝!我已經用另一種方式解決了,但你的解決方案更好。 – wraham 2014-12-03 11:35:58

+0

很高興它的工作! :-) – jeffdill2 2014-12-03 14:58:40

+0

我很好奇,您放置的其他解決方案是什麼? – jeffdill2 2014-12-03 14:59:04