如何在默认情况下将主干视图设置为singleton
How do I set Backbone Views as singleton by default?
所有我的主干。视图在其最终状态下只使用一次。(项目视图除外)。
目前我处理Backbone。视图为Singleton的方式:
var Singletonizer = function(Singleton) {
if (Singleton._instance) return Singleton._instance;
Singleton._instance = new Singleton();
Singletonizer(Singleton);
};
不幸的是,将这个小函数作为依赖项添加到我的存储库中的每个amd模块中并不是很好。
有其他方法可以解决这个问题吗?也许覆盖了基本视图类?
只需让您的模块在视图构造函数之外返回一个函数,该函数会返回它的一个实例,这与下面的没有什么不同。这样,当您加载模块时,无论您喜欢与否,都不会自动获得实例。相反,在加载"FailedXhrView"模块后,我们通过调用FailedXhrView()
来获得我们的单例
'use strict';
define(['jquery',
'underscore',
'backbone',
'text!templates/failedXhr.html'],
function($, _, Backbone, failedXhrTemplate) {
var FailedXhrView = Backbone.View.extend({
el : $('#failedxhr-modal-container'),
template : _.template(failedXhrTemplate),
render : function() {
this.$el.html(this.template({}));
this.$el.find('failedxhr-modal-containee').modal();
return this;
}
});
var instance;
return function() {
if (!instance) {
instance = new FailedXhrView();
}
return instance;
}
});
来自非常推荐的书籍《骨干食谱:》
从这里:
// definition
MyApplication.Views.List = Backbone.View.extend();
// instantiation
$(function() {
MyApplication.ListView = new MyApplication.Views.List({
el: $('#list')
});
})
收件人:
$(function() {
MyApplication.ListView = new (Backbone.View.extend({
initialize: function() {
// ...
}
}))({el: $('#list')})
});
我们为
MyApplication.ListView
分配了一个匿名类的实例化。在这种方法中,我们使用自定义属性和方法对顶级Backbone类进行典型的扩展。然而,不同之处在于,我们确实而不是像前面那样将结果分配给类名。相反,我们立即创建这个匿名类的新实例。最后,将MyApplication.ListView
分配给生成的对象。
我不得不说,我从来没有使用过这样的技术。对我来说,它看起来很乱,我更喜欢易读性而不是建筑。
相关文章:
- 如何设置默认<ui视图>在另一<ui视图>
- 如何在ExtJs4应用程序上为视图、存储和模型设置自定义文件夹名称
- 如何在默认情况下将主干视图设置为singleton
- 在网格视图的自动刷新过程中,设置内部网格视图文本框的可见性
- 无法将对象列表从视图模型设置为 javascript 变量
- 设置子视图控制器 EmberJS
- 将单选按钮设置为签入jquery,而不将其显示为签入视图
- 更新后,父视图未在 Electron 中的
上设置全局变量 - 设置Sails js视图扩展不'不起作用
- 转换复选框'在'在发布到Django视图之前,将其设置为Boolean
- 如何设置默认视图位置(铯1.6)
- AngularJS:如何在设置了$scope.var之后才在视图中设置$scope.var
- 用Javascript将焦点设置在select元素上会将第一个项目滚动到视图之外
- MVC 5视图-设置Javascript变量
- 如何在按下next时自动将滚动视图设置为页面顶部
- 当网格视图设置为 true 时,Jqgrid 在 IE9 中显示“正在加载”
- 如何模拟客户'的IE兼容性视图设置
- 根据当前视图设置按钮为可见或不可见
- 角.从视图设置属性
- 为部分视图设置JavaScript事件处理程序的最佳实践