我正在构建一个javascript繁重的应用程序,它向用户呈现两个不同的视图。一个视图是通过我自己的应用程序的Web界面,因此可以使用RESTful API进行连接,另一个是在OpenSocial小工具中(因此使用opensocial API来获取和检索数据)。
到目前为止,我所做的是拥有一组通用的模型/视图,我可以在Web界面和opensocial小工具中重复使用,并使用mixin替换opensocial小工具的同步方法。
例如
MyBaseModel = Backbone.Model.extend({
... typical backbone model
});
MyOpenSocialMixin = {
sync: function(...) {
// Sync via opensocial here
}
};
myOpenSocialModel = MyBaseModel.extend(MyOpenSocialMixin);
myOpenSocialModel.sync(); // works on opensocial
myAppModel = new MyBaseModel();
myAppModel.sync(); // works on the normal interface
这适用于单个模型,但不适用于嵌套模型(例如,如果MyBaseModel包含许多MySubModel)。处理这种情况的最佳做法是什么?我的嵌套模型是否应该继承其父级的sync()方法?有更好的设计模式吗?
答案 0 :(得分:3)
在子类的构造函数中,肯定有可能传递父SYNC方法。如果该方法未绑定,您可以像Backbone一样将其复制到子类中:
def initialize(attributes, options) {
_.extend(this, {sync: options.parent.sync});
}