在哪里工作dojox.storage AMD的例子?

时间:2012-06-20 15:01:55

标签: dojo

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

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

3 个答案:

答案 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.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;
    });
});

答案 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)。