跳过第一个可选参数,然后传递给骨干model.save

时间:2012-12-02 02:04:59

标签: javascript backbone.js

Backbone的model.save()方法具有以下签名:

model.save([attributes], [options])

我想调用它,但我不想传递任何属性,只传递选项。我需要这样,因为我在使用model.set(attributes)保存之前设置了属性。

如何只将一个对象传递给model.save(),但是表明它是选项对象而不是属性对象?

1 个答案:

答案 0 :(得分:4)

文档是明确的,因此我们必须查看the source

save: function(key, val, options) {
  var attrs, current, done;

  // Handle both `"key", value` and `{key: value}` -style arguments.
  if (key == null || _.isObject(key)) {
    attrs = key;
    options = val;
  } else if (key != null) {
    (attrs = {})[key] = val;
  }

在下面你会看到各种if (attrs ...)支票。所以,如果你说

m.save(null, options)

您将按原样保存模型,然后您就可以设置options。此外,如果你这样说:

m.save(some_attrs, options);

然后(或多或少)与:

相同
m.set(some_attrs);
m.save(null, options);