diff --git a/backbone.js b/backbone.js index dabed49b..805ce42c 100644 --- a/backbone.js +++ b/backbone.js @@ -127,6 +127,7 @@ Backbone.Model = function(attributes, options) { var defaults; attributes || (attributes = {}); + if (options && options.parse) attributes = this.parse(attributes); if (defaults = this.defaults) { if (_.isFunction(defaults)) defaults = defaults.call(this); attributes = _.extend({}, defaults, attributes); diff --git a/test/model.js b/test/model.js index b0e05967..85c6602c 100644 --- a/test/model.js +++ b/test/model.js @@ -51,6 +51,17 @@ $(document).ready(function() { equals(model.one, 1); }); + test("Model: initialize with parsed attributes", function() { + var Model = Backbone.Model.extend({ + parse: function(obj) { + obj.value += 1; + return obj; + } + }); + var model = new Model({value: 1}, {parse: true}); + equals(model.get('value'), 2); + }); + test("Model: url", function() { equals(doc.url(), '/collection/1-the-tempest'); doc.collection.url = '/collection/';