javascript - Backbone.js 中的 "options"是什么?

标签 javascript backbone.js

我在官方看到的Backbone.js中的“options”是什么source code并且还用于 Thomas Davis 的教程博客中示例代码在这里:

Friends = Backbone.Collection.extend({
     initialize: function (models, options) {
                   this.bind("add", options.view.addFriendLi); 
                 }
});

我没有看到任何其他教程使用它,甚至没有提到它的文档。它确实如此,但在上下文类型的格式([选项])中,而不是在硬编码的“选项”中:options.view.addFriendLi

最佳答案

options 通常是键/值对的 javascript 对象,为方法调用提供数据/上下文/参数/配置。将其视为命名参数,而不是有序参数。

例如:

var makePerson = function(name, options) {
  var person = {};
  person.name = name;
  person.age  = options.age;
  return person;
};

var me = makePerson('Alex', {age:30}); // In 3 days... scary :(

被调用的函数如何使用此对象取决于该函数。

Collection.initialize() 的 Backbone 文档似乎没有列出选项对象上使用或期望的键,这很不幸。所以不看源头,就无从得知。但是您的示例似乎确实表明需要 view 键。所以你可以这样调用它:

var friendsCollection = new Friends(userModels, {view: someBackboneView});

这只是许多库倾向于使用的约定,并没有什么特别之处。但通常情况下,传递给函数调用的对象中的许多键比使用许多参数调用的函数要好,因为每个值都有一个标签,可以清楚地说明每个值的用途。


看得更远一点,现在在这里:http://documentcloud.github.com/backbone/docs/backbone.html#section-53

看起来 Collection.initialize() 在其选项中只接受一个键:comparator。在这里您可以定义一个用于对集合中的模型进行排序的函数: http://documentcloud.github.com/backbone/#Collection-comparator

将其应用到您的示例中,您可以这样调用它:

var friendsCollection = new Friends(userModels, {
  view: someBackboneView,
  comparator: function(friend) {
    return friend.get('age');
  }
});

关于javascript - Backbone.js 中的 "options"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997714/

相关文章:

javascript - Backbone.js 集合比较器按多个字段排序?

backbone.js - 为什么我需要对 Backbone.js 自定义事件使用 Underscore.js _.bind 方法?

javascript - 如何使用按钮切换 html 文本和背景的颜色?

Backbone.js 路由器初始化不会立即运行

javascript - 如何在渲染函数中使用 if 进行比较

javascript - 如何使 svg 交互以收集对描绘元素的评论/注释

javascript - Backbone.js Restful json API 设计

javascript - 如何为谷歌地图创建一个 backbone.js View

javascript - 使用 jquery resizable 调整 DIV 的句柄大小

php - 我的 javascript 联系表单不起作用