Backbone: Backbone.Model рдореЗрдВ рдПрдХ "рд░реАрд╕реЗрдЯ" рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 31 рдЬреБрд▓ре░ 2014  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/backbone

рдореБрдЭреЗ рдПрдХ рдореЙрдбрд▓ рдХреЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдпрд╛ рдерд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: Model.set рдХреЙрд▓ рдХрд░реЗрдВ, рдпрд╛ рд╕реАрдзреЗ Model.attributes рд╕реЗрдЯ рдХрд░реЗрдВред рдореИрдВ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ silent рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рддреЛ, рдореИрдВрдиреЗ рдПрдХ рдмрдВрджрд░ рдкреИрдЪ рд▓рд┐рдЦрд╛:

Backbone.Model.prototype.reset = (attributes, options) ->
    attrs = attributes || {};
    if options.parse
      attrs = this.parse(attrs, options) || {}

    @set(attrs, options);
    <strong i="9">@changed</strong> = {};

рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ Backbone.Model Backbone.Collection рддрд░рд╣ рд░реАрд╕реЗрдЯ рдкрджреНрдзрддрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

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

@thesmart , рдореЙрдбрд▓ # рд╕реЗрдЯ рдореЗрдВ рдЧреБрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ # рд░реАрд╕реЗрдЯ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдПрдХ рдХрд╛рд░рдг рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ @ akre54 рдиреЗ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ред рдмреИрдХрдмреЛрди рдореЙрдбрд▓ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЖрджрд┐рдо рдФрд░ рдЕрдиреЛрдкрд┐рдирд┐рдпреЗрдЯреЗрдб рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЙрдбрд▓ # рд░реАрд╕реЗрдЯ рдХреА рдХрдореА рдЗрд╕ рдмрд╛рдд рдкрд░ рдПрдХ рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХрд░рддреА рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Http://backbonejs.org/#Getting -started рд╕реЗ

рджрд╛рд░реНрд╢рдирд┐рдХ рд░реВрдк рд╕реЗ, рдмреИрдХрдмреЛрди рдбреЗрдЯрд╛-рд╕реНрдЯреНрд░рдХреНрдЪрд░рд┐рдВрдЧ (рдореЙрдбрд▓ рдФрд░ рд╕рдВрдЧреНрд░рд╣) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╡рд┐рдЪрд╛рд░ рдФрд░ URL) рдЖрджрд┐рдорддрд╛ рдХреЗ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВред

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

рд░реАрд╕реЗрдЯ рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд▓реНрдХ рдореЗрдВ рдХреБрд╢рд▓ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ set ред

рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЧрдВрджрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЕрдЧрд╕реНрдд рез, реирежрезрек рдХреЛ рд╕реБрдмрд╣ AM:реи, рдмрдЬреЗ, рдЬреЗрд░реЗрдореА рдПрд╢рдХреЗрдирд╕ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рд░реАрд╕реЗрдЯ рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд▓реНрдХ рдореЗрдВ рдХреБрд╢рд▓ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

Model.clear() Model.set({}) рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЗрд╕ рддрд░рд╣ рдЖрдк рд╡рд░реНрддрдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдореЙрдбрд▓ рдкрд░ рджреЛ "рдкрд░рд┐рд╡рд░реНрддрди" рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ Model.clear() рднреА рдореВрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рддрд░реАрдХрд╛ рдЧрд╛рдпрдм рд╣реИред рдореИрдВрдиреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ model.clear() рдФрд░ model.set() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪрд╛ред рдлрд┐рд░ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рднрд╛рдЧ рдЧрдпрд╛, рдХрд┐ рдЕрдм рдореИрдВ change рдЗрд╡реЗрдВрдЯ рдХреЛ рджреЛ рдмрд╛рд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВред
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП silent рдЬрдм рдмреБрд▓рд╛ рд╡рд┐рдХрд▓реНрдк model.clear() , рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рднреА рдПрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ change рдЬрдм рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдШрдЯрдирд╛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ред

model.reset() рд╡рд┐рдзрд┐ рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрд╢ рд▓реЗрддреА рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП undefined рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╣реИрд╢ рдХреЛ рднрд░ рджреЗрддреА рд╣реИ рдЬреЛ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИрд╢ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

Model.prototype.reset = function(attrs, options) {
    for (var key in this.attributes) {
        if (key in attrs) continue;
        attrs[key] = void 0;
    }

    return this.set(attrs, options);
};

@lennerd

рд╡реНрд╣рд╛рдЯ рдЕрдмрд╛рдЙрдЯ:

Model.prototype.reset = function(attrs, options) {
    for (var key in this.attributes) {
        this.unset(key, {silent:true});
    }
    return this.set(attrs, options);
};

рдирд╣реАрдВ, рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЙрдбрд▓ рдХреА рд╡рд░реНрддрдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╣реИрд╢ рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА foo рд╣реИ, рдЬреЛ рдХрд┐ рдирдП attrs рд╣реИрд╢ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк model.reset() ред рдЬрдм рдореИрдВ change:foo рдШрдЯрдирд╛ рд╕реБрдирддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдирдП рдореВрд▓реНрдп undefined рд╕рд╛рде рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╕рд╛рдЗрд▓реЗрдВрдЯ рдореЛрдб рдореЗрдВ model.unset() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред

Backbone.Model.prototype.reset = function(attrs, options) {
    for (var key in this.attributes) {
        this.unset(key, {silent:true});
    }
    return this.set(attrs, options);
};

var bar = new Backbone.Model();

bar.on('change', function(model) {
    console.log('The model bar has been changed.');
});

bar.on('change:foo', function(model, foo) {
    console.log('Foo has been changed to: ' + foo);
});

bar.set(foo, 'test');
// => The model bar has been changed.
// => Foo has been changed to: test

bar.reset({ foo2: 'test2' });
// => The model bar has been changed.
// Foo was resetted but no change event has been triggered.

http://jsfiddle.net/lennerd/3s1Ltwgu/

рдХреВрд▓, рдореБрдЭреЗ рддреБрдорд╕реЗ рдорддрд▓рдм рд╣реИред рдореИрдВ рд╢рд╛рдпрдж this.unset(key, options) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреВрдВрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ attrs[key] = void 0; рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ: panda_face:

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдЬреНрдЮрд╛рди рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЕрднреА рднреА рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рд╡рд╣ Model.fetch рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд╡рд░реНрдгрди рдХрд╣рддрд╛ рд╣реИ:

рд╕рд░реНрд╡рд░ рд╕реЗ рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ change рдЗрд╡реЗрдВрдЯ рдЕрднреА рднреА рдЯреНрд░рд┐рдЧрд░ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореЙрдбрд▓ рдХреЛ "рдЧрдВрджрд╛" рди рдХрд░реЗрдВред рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдХреЗрд╡рд▓ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрдм рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдореЙрдбрд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рдЗрдб-рдЗрдлреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рд╕рд╛рдЗрдб-рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЛ рдЦрд░рд╛рдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЗрд╕реЗ рдЯрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╕рд╛рдЗрдб-рдЗрдлрд╝реЗрдХреНрдЯ рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдирдП рдореЙрдбрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп "рдЕрдкрдбреЗрдЯ рдореЙрдбрд▓ XYZ" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдзреНрд╡рдЬ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдЬрдм рднреА рдЖрдк рдРрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ fetch рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред

рджреЛрдмрд╛рд░рд╛, рдХрд┐рд╕реА рднреА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЬреЛ рдореИрдВ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@kolorahl ,

рдУрдкреА рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдореМрдЬреВрджрд╛ рдореЙрдбрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдФрд░ рдПрдХ рдирдпрд╛ JSON рдкрд╛рд╕ рдХрд░рдирд╛ рдЬреЛ рдореЙрдбрд▓ рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░реАрдХреЗ рд╕реЗ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреИрдХреЗрдВрдб рдХреЛ рд╣рд┐рдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА JSON рд╣реИред

рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ @ lupugabriel1 рдХреЗ рд╕рд╛рде рдЙрдирдХреА рд╕реНрдкрд╖реНрдЯ + рд╕реЗрдЯ рд╡рд┐рдзрд┐ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Backbone.Collection # рд░реАрд╕реЗрдЯ рдЬреИрд╕рд╛ рдХреБрдЫ

рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХреНрдпреЛрдВрдХрд┐ рджреБрдирд┐рдпрд╛ рдмрджрд▓ рд░рд╣реА рд╣реИред рдмреИрдХрдмреЛрди рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ # рднреНрд░реВрдг () XHR рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рд╡рд┐рдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡реЗрдмрд╕реНрдХреИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрдм рдбреЗрдЯрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдзрдХреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдорд╛рдиреА рд╣реИред рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдЗрдб-рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рднреНрдп рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рднреА рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╣реБрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдк #set рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@jridgewell рдХреНрдпреЛрдВрдХрд┐ #set рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЧрдВрджрд╛ рдХрд░ рджреЗрдЧрд╛ред рдЖрдЗрдП рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

function callback(data_from_server) {
  console.info(data_from_server);
  m = new Backbone.Model(data_from_server);
  m.set('foo', 'what?', {silent: true});
  console.info(m.changedAttributes())
}

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо:

{foo: 'bar'}
{foo: "what?"}

рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо:

{foo: 'bar'}
false

рд╕реЗрдЯ рддрдм рдареАрдХ рд╣реИ рдЬрдм рд░рд╛рдЬреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЖрдЙрдЯ-рдСрдл-рд╕рд┐рдВрдХ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЙрдбрд▓ # рд░реАрд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ w / рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмрдВрджрд░ рдкреИрдЪ рд▓рд┐рдЦрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛:

/**
 * Allow for side-loading data from the server, calling the sync event afterwards.
 * <strong i="6">@param</strong> attributes
 * <strong i="7">@param</strong> options
 */
Backbone.Model.prototype.sync_set = function(attributes, options) {
  var attrs = attributes || {};
  if (options.parse) {
    attrs = this.parse(attrs, options) || {}
  }

  this.set(attrs, options);
  this.changed = {};
  this.trigger('sync', this, attributes, options);
  return this;
}
function callback(data_from_server) {
  console.info(data_from_server);
  m = new Backbone.Model(data_from_server);
  m.set('foo', 'what?', {silent: true});
  console.info(m.changedAttributes())
}
{foo: 'bar'}
false

рдпрд╣ рд╢рд╛рдпрдж рд▓рд╛рдкрддрд╛ рдЖрдЗрдЯрдо рднреА рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдореЙрдбрд▓ # рд╕реЗрдЯ (рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ) рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ @lennerd рдиреЗ рдмрддрд╛рдпрд╛, clear() рдмрд╛рдж set() рдХрд╛ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣

1) рдЖрдЧ рджреЛ change рдШрдЯрдирд╛рдУрдВ рдФрд░
2) рдпрджрд┐ рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ silent:true рдкрд░ clear рдХреЙрд▓, рдЖрдк рдЧреБрдг рдЬреЛ рд╕реЗрдЯ рдирд╣реАрдВ рдереЗ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛рдУрдВ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

collection.reset() рдмрд╣реБрдд рд╕рд╣рдЬ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Model рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдордХрдХреНрд╖ рд╡рд┐рдзрд┐ рд╕реЗ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЦреБрдж рдХреЛ рд╣рд░ рд╕рдордп model.reset(attrs) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рдореЗрд╢рд╛ рдирд┐рд░рд╛рд╢ рдЬрдм рдпрд╣ рдирд╣реАрдВ рд╣реИред :(

рдореИрдВрдиреЗ рдЖрдЧреЗ рдмрдврд╝ рдХрд░ рдмреИрдХрдмреЛрди рдХреЗ рд▓рд┐рдП рдПрдХ reset рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ред рдмреИрдХрдмреЛрди-рдореЙрдбрд▓-рд░реАрд╕реЗрдЯ

рд╕рд╣рдордд - рдореВрд▓ рд░реВрдк рд╕реЗ рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдореБрдЭреЗ 'id' рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдореИрдиреНрдЯреЗрди рдХрд┐рдП рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдкрд╖реНрдЯ () рдХрд░ рд░рд╣рд╛ рдерд╛ред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рд╕рд╛рд░ рд╣реИ ред

@thesmart , рдореЙрдбрд▓ # рд╕реЗрдЯ рдореЗрдВ рдЧреБрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ # рд░реАрд╕реЗрдЯ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдПрдХ рдХрд╛рд░рдг рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ @ akre54 рдиреЗ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ред рдмреИрдХрдмреЛрди рдореЙрдбрд▓ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЖрджрд┐рдо рдФрд░ рдЕрдиреЛрдкрд┐рдирд┐рдпреЗрдЯреЗрдб рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЙрдбрд▓ # рд░реАрд╕реЗрдЯ рдХреА рдХрдореА рдЗрд╕ рдмрд╛рдд рдкрд░ рдПрдХ рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХрд░рддреА рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Http://backbonejs.org/#Getting -started рд╕реЗ

рджрд╛рд░реНрд╢рдирд┐рдХ рд░реВрдк рд╕реЗ, рдмреИрдХрдмреЛрди рдбреЗрдЯрд╛-рд╕реНрдЯреНрд░рдХреНрдЪрд░рд┐рдВрдЧ (рдореЙрдбрд▓ рдФрд░ рд╕рдВрдЧреНрд░рд╣) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╡рд┐рдЪрд╛рд░ рдФрд░ URL) рдЖрджрд┐рдорддрд╛ рдХреЗ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВред

рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдБ, Backbone рдХрд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ REST рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИ
рдХреНрдпреЛрдВрдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдмрд╛рдж рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЧрдВрднреАрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ
рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдирдпрд╛ рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рд╣реА рдПрдХрдорд╛рддреНрд░ рд░рд╛рд╕реНрддрд╛ рд╣реИ
рд░реАрд╕реЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рддрд╛рдЬрд╛ рд╕реНрдерд┐рддрд┐ред

рдордВрдЧрд▓рд╡рд╛рд░, 5 рдЬреБрд▓рд╛рдИ 2016 рдХреЛ, pgifford рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@thesmart https://github.com/thesmart , рдореЙрдбрд▓ # рд╕реЗрдЯ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реИ
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдореЙрдбрд▓ # рд░реАрд╕реЗрдЯ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдПрдХ рдХрд╛рд░рдг рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╣реЛ
рдпрд╣ рдЬрд╛рдирдирд╛ рдкрд╕рдВрдж рд╣реИ рдХрд┐ @ akre54 https://github.com/akre54 рдиреЗ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ред
рд░реАрдврд╝ рдХреА рд╣рдбреНрдбреА рдХреЗ рдореЙрдбрд▓ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЖрджрд┐рдо рдФрд░ рдЕрдирдкрдврд╝ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐,
рдореЙрдбрд▓ # рд░реАрд╕реЗрдЯ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реЗ
http://backbonejs.org/#Getting -started

рджрд╛рд░реНрд╢рдирд┐рдХ рд░реВрдк рд╕реЗ, рдмреИрдХрдмреЛрди рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИ
рдбреЗрдЯрд╛-рд╕рдВрд░рдЪрдирд╛ (рдореЙрдбрд▓ рдФрд░ рд╕рдВрдЧреНрд░рд╣) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рджреГрд╢реНрдп рдФрд░
URL) рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рдеред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/jashkenas/backbone/issues/3253#issuecomment -230586424,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe/AARJLQ8-BGeV0X_owHVpyPQAdeiMweNMks5qSriDgaJpZM4CTBHH
ред

рдореБрдЭреЗ рдПрдХ рдореЙрдбрд▓ reset рдФрд░ рдЙрд╕рдиреЗ рдЖрдЧреЗ рдмрдврд╝рдХрд░ Backbone рдХреЗ _spirit_ рдореЗрдВ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ред рдореИрдВ рдмреИрдХрдмреЛрди рдХреЗ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг .clear рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж .set рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХреЛ рдореЙрдбрд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рдорд┐рд▓рд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд┐рд╕реА рднреА рдЙрддреНрддреАрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЖрд░рдВрднреАрдХрд░рдг рдХреА рддрд░рд╣ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

/**
 * Clears the model's attributes and sets the default attributes.
 * <strong i="10">@param</strong> {Object} attributes to overwrite defaults
 * <strong i="11">@param</strong> {Object} options  to pass with the "set" call.
 * <strong i="12">@return</strong> {Backbone.Model}  this object, to chain function calls.
 */
reset: function(attributes, options) {
    options = _.extend({ reset: true }, options);

    // ensure default params
    var defaults = _.result(this, 'defaults'),
        attrs = _.defaults(_.extend({}, defaults, attributes || {}), defaults);

    // apply
    this._reset(attrs, options);

    // triggers a custom event, namespaced to model in order
    // to avoid collision with collection's native reset event
    // when listening to a collection.
    if (!options.silent) this.trigger('model:reset', this, options);

    return this;
},

/**
 * Private method to help wrap reset with a custom behavior in child
 * classes.
 * <strong i="13">@param</strong>  {Object} attributes to overwrite defaults
 * <strong i="14">@param</strong>  {Object} options  to pass with the "set" call.
 */
_reset: function(attrs, options) {
    this.clear({ silent: true }).set(attrs, options);
},

рдпрд╣ рдХрд╕реНрдЯрдо model:reset рдШрдЯрдирд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ silent: true рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдИрд╡реЗрдВрдЯреНрд╕ ( change рдФрд░ change:attribute ) рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЗрд╡рд▓ model:reset рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ lennerd https://github.com/jashkenas/backbone/issues/3253#issuecomment -58789524 рдХреЛ рдереЛрдбрд╝рд╛-рдереЛрдбрд╝рд╛ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИред

Backbone.Model.prototype.reset = function(attrs, options) {
    var missing = {};
    for (var key in this.attributes) {
        if (key in attrs) continue;
        attrs[key] = undefined;
        missing[key] = true;
    }
    // trigger all change events at the same time
    this.set(attrs, options);
    // remove missing attributes completely
    for (var key in missing) {
        // no silent option here in case  attributes changed again meanwhile (edge case)
        this.unset(key)
    }
    return this;
};
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

azizZaben picture azizZaben  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alundiak picture alundiak  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jonathan picture jonathan  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tribalvibes picture tribalvibes  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ