Backbone: idAttribute modelId рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рдпрджрд┐ рдореЙрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рджрд┐рд╕ре░ 2019  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/backbone

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреБрд░рд╛рдиреЗ https://github.com/jashkenas/backbone/pull/3966 PR рдХреЛ рдЕрднреА рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рддреЛ рдмрддрд╛рдПрдВ...

рд╕рднреА 10 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ред рдореЙрдбрд▓ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ (рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣) рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ред

рдЖрдк рдмрд╣реБрд░реВрдкреА рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдПрдХ рдореЙрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЗ рд╕рдВрдЧреНрд░рд╣ рдкрд░ .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 рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ:

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
   }
});

рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рдЬрд╡рд╛рдм idAttribute рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдирдпрд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдЖрдк рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдирдпрд╛ рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

image

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб - рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ 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 рдХреЛ рдЕрднреА рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рддреЛ рдмрддрд╛рдПрдВ...

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

etler picture etler  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

spawnedc picture spawnedc  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

g00fy- picture g00fy-  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cueedee picture cueedee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ