2012-06-20 2 views
2

Кажется, что я не могу найти dojox.storage где-то недавно. Is dojox.storage сломанной в 1.7 (AMD)? Похоже, модульные тесты даже не работают. Пример в /dojo-release-1.7.2-src/dojox/storage/tests/test_storage.html, похоже, вообще не работает на FF или IE.Где работают примеры dojox.storage AMD?

Каков рекомендуемый подход к использованию локального хранилища? В нашем случае мы хотели бы использовать хранилище HTML5, которое возвращается в хранилище файлов cookie, когда оно недоступно.

+1

Я использую dojox.storage.manager в 1.7.1 и, кажется, работает на HTML5 (локальное хранилище), я не тестировал его на старых (crappier) браузерах. Я не использую full-AMD/async, поскольку модули dojox.storage не являются AMD в 1.7.1. – Andrew

ответ

1

Согласно http://dojotoolkit.org/reference-guide/1.8/dojox/storage.html и http://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

Что касается 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.addOnLoad(function(){ 
    TestStorage.initialize(); 
}); 

примерные функции (для LocalStorageProvider) в обоих FireFox и IE 10.

Смежные вопросы