рдореИрдВ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ред рдореЙрдбрд▓ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ (рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣) рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ред
рдЖрдк рдмрд╣реБрд░реВрдкреА рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдПрдХ рдореЙрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЗ рд╕рдВрдЧреНрд░рд╣ рдкрд░ .add
рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдмреИрдХрдмреЛрди рдХреЛрдб .prototype.idAttribute
рдХреЛ model
рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдиреЗ model
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ ES2015 рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рддреЛ рдЗрд╕рдореЗрдВ prototype
рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/jashkenas/backbone/blob/75e6d0ce6394bd2b809823c7f7dc014ddb6ae287/backbone.js#L1102
рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛:
const Library = Backbone.Collection.extend({
model () {
// stuff goes here
}
});
рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
const Library = Backbone.Collection.extend({
model: function () {
// stuff goes here
}
});
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ (рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣) рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ред
рдЖрдк рдмрд╣реБрд░реВрдкреА рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдПрдХ рдореЙрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЗ рд╕рдВрдЧреНрд░рд╣ рдкрд░
.add
рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдмреИрдХрдмреЛрди рдХреЛрдб.prototype.idAttribute
рдХреЛmodel
рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдиреЗmodel
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ ES2015 рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рддреЛ рдЗрд╕рдореЗрдВprototype
рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИредрдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ:
рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛:
const Library = Backbone.Collection.extend({ model () { // stuff goes here } });
рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
const Library = Backbone.Collection.extend({ model: function () { // stuff goes here } });
рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рдЬрд╡рд╛рдм idAttribute рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рдирдпрд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдЖрдк рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдирдпрд╛ рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб - рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ model.prototype.idрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдореЙрдбрд▓ рдХреА рддрд░рд╣ рд╣реАред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ model
рдкрд░ Collection
рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: Override this property to specify the model class that the collection contains.
рдпрд╣ рдПрдкреАрдЖрдИ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
@paulfalgout Collection.model рдХреЗ рд▓рд┐рдП рдмреИрдХрдмреЛрди рдбреЙрдХреНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ model
рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ model ()
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ ( model: function()
рдХреЗ рдмрдЬрд╛рдп) рдореБрдЭреЗ рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдмреЗрд╣рдж рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред
рд╣рд╛рдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдореВрд▓ рд╕рдВрджреЗрд╢ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://backbonejs.org/#Collection -model
@PavelKoroteev : рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╣реА рдирд╣реАрдВред
рдпрд╣рд╛рдБ рдореИрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ (рдХрдВрд╕реЛрд▓ рд╕реЗ рдЪрд┐рдкрдХрд╛рдпрд╛ рдЧрдпрд╛):
collection = new (Backbone.Collection.extend({ model (attrs, options) { return new (Backbone.Model.extend({ idAttribute: 'customId' }))(attrs, options)}}));
child┬а{length: 0, models: Array(0), _byId: {тАж}}
collection.add({ customId: 'id.1' });
backbone.js:1102 Uncaught TypeError: Cannot read property 'idAttribute' of undefined
at child.modelId (backbone.js:1102)
at child.get (backbone.js:997)
at child.set (backbone.js:872)
at child.add (backbone.js:814)
at <anonymous>:1:12
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдорд▓рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реА рд╣реИред рдФрд░ рдпрд╣ рднреА https://github.com/jashkenas/backbone/issues/4203 . рдЬреИрд╕рд╛ рд╣реА рд╣реИ
model: function(attrs, options)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ idAttribute
рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ id
рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ рдЗрд╕рд▓рд┐рдП рдпрд╣ "рдХрд╛рдо" рдХрд░реЗрдЧрд╛
рдЖрдк рд╕рд╣реА рд╣реИрдВ рдкреЙрд▓рд┐рдореЙрд░реНрдлрд┐рдХ рдореЙрдбрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИред _but_... рдЗрд╕рдиреЗ idAttribute
рдпрд╛ es6-рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде model.prototype
рдХрд╛рдлреА рд╕рдордп рд╕реЗ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/jashkenas/backbone/pull/3966 рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдлрд┐рдХреНрд╕ рд╣реИ: -/
2016 рд╕реЗ рдПрдХ рдкреАрдЖрд░ рдХреЛ рджреЗрдЦрдирд╛ рдФрд░ рд╡рд┐рд▓рдп рдирд╣реАрдВ рд╣реЛрдирд╛ (рдпрд╛ рдХреБрдЫ рдмреЗрд╣рддрд░ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛) рдореВрд▓ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рднреА рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдмреИрдХрдмреЛрди рдХрд╛рдлреА рд╣рдж рддрдХ рдорд░ рдЪреБрдХрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рджреВрд╕рд░реЛрдВ рдиреЗ рднреА рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдпрд╛ рд╣реИ, рдореЗрд░рд╛ рдирд╛рдо рдХрдВрдХрд╛рд▓ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдЕрдкрдиреЗ рдмреИрдХрдмреЛрди рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдПрдкреАрдЖрдИ рдФрд░ рдорд╛рдирдХреЛрдВ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реВрдВрдЧрд╛ рдФрд░ рдлрд┐рд░ рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдХреБрдЫ рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ред
рдореИрдВрдиреЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреБрд░рд╛рдиреЗ https://github.com/jashkenas/backbone/pull/3966 PR рдХреЛ рдЕрднреА рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рддреЛ рдмрддрд╛рдПрдВ...
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреБрд░рд╛рдиреЗ https://github.com/jashkenas/backbone/pull/3966 PR рдХреЛ рдЕрднреА рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рддреЛ рдмрддрд╛рдПрдВ...