2

我似乎无法找到 dojox.storage 最近某处记录。在1.7 (AMD)dojox.storage中坏了?似乎单元测试甚至不起作用。在 FF 或 IE 上的示例似乎根本不起作用。/dojo-release-1.7.2-src/dojox/storage/tests/test_storage.html

使用本地存储的推荐方法是什么?在我们的例子中,我们希望使用 HTML5 存储,当 cookie 存储不可用时,它会依赖于 cookie 存储。

4

3 回答 3

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);
   });
});
于 2012-08-31T08:07:09.480 回答
1

根据http://dojotoolkit.org/reference-guide/1.8/dojox/storage.htmlhttp://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;
    });
});
于 2013-01-24T01:05:22.860 回答
1

至于DoJo 1.9.2dojox.storagetest ( /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)。

于 2014-02-20T14:15:41.757 回答