gpt4 book ai didi

backbone.js - 带有 RequireJS 的 Backbone 多页应用程序中的单例模型

转载 作者:行者123 更新时间:2023-12-04 22:32:34 27 4
gpt4 key购买 nike

我有一个使用 RequireJS 编写的 Backbone 多页应用程序。由于它是多页的,我决定不使用路由器,因为它太乱了。我尝试了多种方法来创建要在整个应用程序中使用的单例对象

var singletonModel= Backbone.Model.extend({

}),
return new singletonModel;

对于上述内容,我只是使用 define 方法在我的类中引用 singletonModel 模型,然后按原样调用它
this.singleton = singletonModel;
this.singleton.set({'test': 'test'});

在我下一页的一个模块上,然后我调用类似的东西
this.singleton = singletonModel;
var test = this.singleton.get('test');

单例对象似乎重新初始化并且测试对象为空
var singletonModel= Backbone.Model.extend({

}, {
singleton: null,
getSingletonModelInst: function () {
singletonModel.singleton =
singletonModel.singleton || new singletonModel;
return singletonModel.singleton;
}

});
return singletonModel;

对于上述内容,我只是使用 define 方法在我的类中引用 singletonModel 模型,然后按原样调用它
this.singleton = singletonModel.getSingletonModelInst();
this.singleton.set({'test': 'test'});

在我下一页的一个模块上,然后我调用类似的东西
this.singleton = singletonModel.getSingletonModelInst();
var test = this.singleton.get('test');

再次看起来单例对象正在重新初始化并且测试对象为空。

我想知道问题是否是因为我使用的是没有路由器的多页应用程序,所以没有保留状态?有没有人尝试过在多页面应用程序中使用单例对象?如果是这样,您是否做了与在单页应用程序上实现方式不同的事情?

谢谢,
真皮

最佳答案

Bart 的回答很好,但是没有说的是如何使用 require.js 来创建单例。答案很简短,只需返回一个已经实例化的对象:

define([], function() {

var singleton = function() {
// will be called only once
}

return new singleton()
})

这里我们不再有单例了:
define([], function() {

var klass = function() {
// will be called every time the module is required
}

return klass
})

关于backbone.js - 带有 RequireJS 的 Backbone 多页应用程序中的单例模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com