我在官方看到的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/