2012-06-20 21 views
2

我似乎無法找到最近記錄在某處的dojox.storage。是dojox.storage中破解1.7(AMD)?它似乎單元測試甚至沒有工作。在FF或IE上,/dojo-release-1.7.2-src/dojox/storage/tests/test_storage.html上的示例似乎不起作用。哪裏在工作dojox.storage AMD例子?

使用本地存儲的推薦方法是什麼?在我們的情況下,我們希望使用HTML5存儲,當存儲不可用時,它會回退到Cookie存儲。

+1

dojo.addOnLoad(function(){ TestStorage.initialize(); }); 

的示例功能(LocalStorageProvider)我使用在1.7.1的dojox.storage.manager和它似乎工作HTML5上(本地存儲)瀏覽器,我還沒有在較老的(可怕的)瀏覽器上測試它。我沒有使用全AMD /異步,因爲dojox.storage模塊在1.7.1中不是AMD。 – Andrew

回答

1

根據http://dojotoolkit.org/reference-guide/1.8/dojox/storage.htmlhttp://bugs.dojotoolkit.org/ticket/14465,預計不會dojox.storage與AMD合作並不會一會兒。

這就是說,這確實爲我工作在道場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

以下示例來自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); 
    }); 
}); 
+0

如果我們想使用AMD? – djna

+0

顯然這將在2.0中被棄用 –

1

至於道場1.9.2dojox.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叫。改變後的代碼:在Firefox和IE 10.