我似乎无法找到最近在某处记录的dojox.storage。 1.7(AMD)中的dojox.storage
是否被破坏?单位测试似乎无法正常工作。 /dojo-release-1.7.2-src/dojox/storage/tests/test_storage.html
上的示例似乎在FF或IE上根本不起作用。
使用本地存储的推荐方法是什么?在我们的例子中,我们希望使用HTML5存储,当存储不可用时,它会依赖于cookie存储。
答案 0 :(得分:2)
以下来自http://dojotoolkit.org/reference-guide/1.8/dojox/storage.html的示例它正在开发Dojo 1.7及更高版本。
dojo.require("dojox.storage");
var storageProvider=null;
dojo.addOnLoad(function(){
dojox.storage.manager.initialize();
storageProvider=dojox.storage.manager.getProvider();
storageProvider.initialize();
var myObject={key1:true};
storageProvider.put("myValue", myObject, function(status, keyName){
alert("value put in "+keyName);
});
});
答案 1 :(得分:1)
根据http://dojotoolkit.org/reference-guide/1.8/dojox/storage.html和http://bugs.dojotoolkit.org/ticket/14465,dojox.storage不会与AMD合作,并且暂时不会。
那就是说,这在dojo 1.8.3中对我有用:
require(["dojox/storage", "dojo/ready"], function (storage, ready) {
ready(function() {
var storageProvider = dojox.storage.manager.getProvider();
storageProvider.initialize();
var vals = storageProvider.get("InventoryMainSelectionHistory");
var i = 1;
});
});
答案 2 :(得分:1)
至于 DoJo 1.9.2 ,dojox.storage
测试(/dojox/storage/tests/test_storage.html
)无效。在更近的检查之后,恰好是特定代码中的初始化问题:
// wait until the storage system is finished loading
dojo.addOnLoad(function(){
// is the storage already loaded?
if(dojox.storage.manager.isInitialized() == false){
dojo.connect(dojox.storage.manager, "loaded", TestStorage, TestStorage.initialize);
}else{
dojo.connect(dojo, "loaded", TestStorage, TestStorage.initialize);
}
});
侦听器已注册等待在dojo上“加载”的事件,而在较新的DoJo版本中未调用该事件。更改代码后:
dojo.addOnLoad(function(){
TestStorage.initialize();
});
FireFox和IE 10中的示例函数(对于LocalStorageProvider)。