Backbone JS - 集合、视图和模型的组合
Backbone JS - Combination of collection, views and models
我现在在三个不同的项目中进行了以下设置,所以我认为也许值得在这里提问。有可能我不是唯一对此感到疑惑的人。
它来了:
- 我有一个对象列表
- 列表项有draggable或onClick-Events等特殊功能
我的问题:如何使用 Backbone 构建此场景?
我想我为我的列表对象创建了一个模型和一个视图。我使用集合来保存我的对象。
现在我想知道:我是否在模型构造函数中实例化对象视图并在集合构造函数中实例化模型?还是有更好的方法来实现我想要的?
都没有;使用调解器实例化视图并将它们注入 model/collection.
Marionette.js 有 a nice implementation for this sort of mediating object, called Controller
- 我建议你检查一下。
此外,您不必显式实例化集合模型 - 只需在集合的原型中声明它们的类型,例如:
var MyModel = Backbone.Model.extend({
// do some shit
});
var MyCollection = Backbone.Collection.extend({
model: MyModel // pass the type for the collection to instantiate
});
进一步采用我们的 mediator/controller 方法,可以这样做(使用 Marionette.js):
var MyController = Marionette.Controller.extend({
initialize: function () {
this.myCollection = new MyCollection();
this.myCollectionView = new MyCollectionView({
collection: this.myCollection
});
}
});
当然,这只是一个框架代码,旨在粗略演示 MVC 方法,但它是一个很好的起点。
我现在在三个不同的项目中进行了以下设置,所以我认为也许值得在这里提问。有可能我不是唯一对此感到疑惑的人。
它来了:
- 我有一个对象列表
- 列表项有draggable或onClick-Events等特殊功能
我的问题:如何使用 Backbone 构建此场景?
我想我为我的列表对象创建了一个模型和一个视图。我使用集合来保存我的对象。
现在我想知道:我是否在模型构造函数中实例化对象视图并在集合构造函数中实例化模型?还是有更好的方法来实现我想要的?
都没有;使用调解器实例化视图并将它们注入 model/collection.
Marionette.js 有 a nice implementation for this sort of mediating object, called Controller
- 我建议你检查一下。
此外,您不必显式实例化集合模型 - 只需在集合的原型中声明它们的类型,例如:
var MyModel = Backbone.Model.extend({
// do some shit
});
var MyCollection = Backbone.Collection.extend({
model: MyModel // pass the type for the collection to instantiate
});
进一步采用我们的 mediator/controller 方法,可以这样做(使用 Marionette.js):
var MyController = Marionette.Controller.extend({
initialize: function () {
this.myCollection = new MyCollection();
this.myCollectionView = new MyCollectionView({
collection: this.myCollection
});
}
});
当然,这只是一个框架代码,旨在粗略演示 MVC 方法,但它是一个很好的起点。