该示例仅将属性设置为示例。作为可选的第二个参数,您可以设置options
。
我无法在API中找到解释此问题的任何内容。此外,源代码对我来说并不完全合理。
var Model = Backbone.Model = function(attributes, options) {
var attrs = attributes || {};
options || (options = {});
this.cid = _.uniqueId('c');
this.attributes = {};
if (options.collection) this.collection = options.collection;
if (options.parse) attrs = this.parse(attrs, options) || {};
attrs = _.defaults({}, attrs, _.result(this, 'defaults'));
this.set(attrs, options);
this.changed = {};
this.initialize.apply(this, arguments);
};
它们仅用于设置collection
和parse
吗?为什么它们与属性分开?
答案 0 :(得分:0)
在我的头顶,我可以看到两个原因:
attributes
.get(attrName)
的每个数据
options
也会发送到.set
方法。 我们甚至讨论过initialize
方法中发生的事情。你可以用它来制作很多很酷的东西。
答案 1 :(得分:0)
options占位符提供了在每种方法中继续操作所需的元信息。主要是方法
{"validate":true}
在同步方法中,选项返回...
{"validate":true,"parse":true}
在parse方法中,选项返回...
{"validate":true,"parse":true,"emulateHTTP":false,"emulateJSON":false,"xhr":{"readyState":4,"responseText":"{\"your-response-keys\" : \"your-response-values\"}","status":201,"statusText":"Created"}}
就像那样......在每种方法中,它都提供了额外的信息 继续下一个功能。
请注意,您不必随时设置这些属性。它们是由隐式设定的 骨干库,用于跟踪当前实例的状态。 希望这会对你有所帮助。