2013-03-08 25 views
11

Tôi đang cố gắng hiển thị bộ sưu tập xương sống trên mẫu được xây dựng bằng mustache.js. Vấn đề là tôi không thể lấy được cid của mô hình trong mẫu. Mã của tôi làkhông thể lấy được cid của mô hình trong khi hiển thị bộ sưu tập xương sống trên một mẫu

 <div class="phone span4"> 
      <h5> Phone Appointments</h5> 
      {{ _.each(slots, function(slot) { }} 
       {{ if(slot.aptType == "P"){ }} 
        <h6 cid="{{=slot.cid}}" aptId="{{=slot.aptId}}"> {{=slot.beginTime}} - {{=slot.endTime}} </h6> 
       {{ } }} 
      {{ }); }} 
     </div> 

từ mã trên, tôi có thể nhận được aptId, beginTime và thời gian kết thúc, chứ không phải Cid. Làm thế nào để có được Cid của mô hình từ một bộ sưu tập trong khi hiển thị nó trên một mẫu?

và đưa ra phương pháp của tôi từ cái nhìn trông như thế này

render:function(){ 
    var template = _.template($("#slot-display-template").html()); 
    compiledTmp = template({slots: this.collection.toJSON()}) 
    this.$el.append(compiledTmp); 
    } 

Ngoài ra là có bất kỳ bất lợi của việc sử dụng cid là định danh duy nhất của một mô hình?

Cảm ơn trước !!!

+0

Tại sao bạn cần cid nằm trong html? Nếu bạn có id của mô hình (có vẻ như aptId là idAttribute?), Bạn có thể tìm thấy nó trong bộ sưu tập, 'collection.get (modelId)'. –

Trả lời

22

cid không được bao gồm theo mặc định trong đầu ra toJSON. Bạn sẽ cần ghi đè toJSON trong định nghĩa mô hình của mình và bao gồm cid.

toJSON: function() { 
    var json = Backbone.Model.prototype.toJSON.apply(this, arguments); 
    json.cid = this.cid; 
    return json; 
} 
+0

Trong mọi trường hợp là khá lạ mà không có một cách bản địa (một lá cờ?) Để hiển thị "cid" bên trong mô hình. – xdemocle

+0

điều này thật lố bịch, được bỏ phiếu –

1

Nếu bạn cần một giải pháp lẻ tẻ quảng cáo, này sẽ làm việc thêm:

var params = _.extend({}, this.model.toJSON(), {cid: this.model.cid}) 
1

Bằng cách này nếu bạn không cần phải mở rộng hành vi của tất cả các mô hình bạn chỉ có thể thêm cid để mô hình của bạn sử dụng phương pháp parse. Ví dụ bạn có bộ sưu tập 'Bộ sưu tập'. Bạn có thể chỉ định mô hình cho bộ sưu tập này và ghi đè phương thức parse để đính kèm mô hình cid vào phản hồi.

var Collection = Backbone.Collection.extend({ 
    model: Model 
}); 

var Model = Backbone.Model.extend({ 
    parse: function(response) { 
     response.cid = this.cid; 
     return response; 
    } 
}); 

Vì vậy, bạn sẽ có thể nhận được cid từ các thuộc tính của mô hình.

Các vấn đề liên quan