2013-12-12 35 views
0

//文件中的一個如何調用amd體系結構模型(主幹)中的集合函數?

//如何調用choicesCollection setnextOne在ChoicesModel default功能(對象)

var ChoicesModel = Backbone.Model.extend({ 
    defaults: function() { 
     // this.collection ?? 
     return { 
     seq_id: choicesCollection.setnextOne(), 
     subject: "" 
     }; 
    }, 
    initialize: function() { 

     console.log(this); 

     if (!this.get("seq_id")) { 
     this.set({"seq_id": this.defaults().seq_id}); 
     } 
    } 
}); 

//文件中的兩個

var ChoicesCollection = Backbone.Collection.extend({ 
    model:ChoicesModel, 
    setnextOne: function() { 
     if (!this.length) return 0; 
     return +this.last().get('seq_id') + 1; 
    }, 
    // sort 
    comparator: function(choice) { 
     return choice.get('seq_id'); 
    } 
}); 

//文件中的三個

var choicesCollection = new ChoicesCollection(); 

回答

1

提供了一些更深入地瞭解Manikandan的答案...

如果你看一下骨幹代碼,你會看到下面的(我已經刪除了一些位):

var View = Backbone.View = function(options) { 
    options || (options = {}); 
    _.extend(this, _.pick(options, viewOptions)); 
}; 

// List of view options to be merged as properties. 
var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']; 

,你可以see_.pick用於從傳入的選項中白名單列出屬性的子集。然後,將View原型擴展爲插入這些屬性(如果它們已通過)。

總之,以下屬性被自動拋到你的看法,如果你將它們作爲選項:

模型,收集,薩爾瓦多,ID,屬性,類名

+0

我發現根情況下,我的骨幹版本(0.9.2)太老了。在新版本中,'defaults'函數初始化後,因爲你說' '將被合併爲屬性的'模型'選項列表'。 – Terry

0

按照骨幹documentation一旦您將模型添加到集合中,您應該通過this.collection訪問集合。或者當您創建模型時您需要發送收集選項。

+0

我只是想打電話的收集方法模型'defaults'爲了設置**自動索引值** – Terry