【发布时间】:2012-02-05 14:36:43
【问题描述】:
为 Backbone.js 使用 localStorage 插件的标准方式如下:
App.WordList = Backbone.Collection.extend({
initialize : function(models, options){
},
localStorage : new Store('English')
}
但我想用不同的语言制作不同的、平行的词表集合。因此,我希望能够在集合初始化时实例化 Store 的名称。 AFAICT,这行得通:
App.WordList = Backbone.Collection.extend({
initialize : function(models, options){
this.localStorage = new Store(options.language);
}
}
然后我可以像这样实例化一个 WordList:
english = new Wordlist([], {language: 'English'});
或者:
chinese = new Wordlist([], {language: 'Chinese'});
问题是,我还没有在任何其他示例中真正看到过这样做,我想知道那里是否有人会有任何“哎呀!不要那样做,因为......”之类的反应。
编辑
我应该补充一点,我已经尝试过这样做:
App.WordList = Backbone.Collection.extend({
initialize : function(models, options){
},
localStorage : new Store(options.store)
}
然后:
chinese = new Wordlist([], {language: 'Chinese'});
但由于某种原因,options.store 即将出现未定义。
【问题讨论】:
-
从语法上讲,在您的
localStorage : new Store(options.store)示例中,options不是您正在制作的集合的任何内容的本地。它必须在某些外部环境中定义。在这种情况下,options本身很可能是未定义的。 -
不是
initialize()本地吗?