Parse.com - Parse.Object.extend(...)属性

时间:2014-10-28 12:39:57

标签: javascript parse-platform underscore.js

我正在使用Parse JS和Backbone,我尝试从Parse JS模型中打印一个值列表。这很容易,但我对objectId有问题。

然后,我有......

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>

属性名称和颜色正确显示,但&#39; ID未定义&#39;

有什么想法吗?

1 个答案:

答案 0 :(得分: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>