模型选项的目的是什么?

时间:2014-06-21 23:34:06

标签: javascript backbone.js

Backbone API for Model

该示例仅将属性设置为示例。作为可选的第二个参数,您可以设置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);
};

它们仅用于设置collectionparse吗?为什么它们与属性分开?

2 个答案:

答案 0 :(得分:0)

在我的头顶,我可以看到两个原因:

  1. 选项不是可以使用attributes
  2. 访问.get(attrName)的每个数据
  3. options也会发送到.set方法。
  4. 我们甚至讨论过initialize方法中发生的事情。你可以用它来制作很多很酷的东西。

答案 1 :(得分:0)

options占位符提供了在每种方法中继续操作所需的元信息。主要是方法

  1. 验证()
  2. 同步()
  3. 解析()
  4. 那些...... 例如,在validate方法中,选项返回...

    {"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"}}
    

    就像那样......在每种方法中,它都提供了额外的信息 继续下一个功能。

    请注意,您不必随时设置这些属性。它们是由隐式设定的 骨干库,用于跟踪当前实例的状态。 希望这会对你有所帮助。