Jun. 5th, 2015
бэкграунд проблемы: когда пишешь под Хромовские packaged app, не можешь пользоваться Локал Сториджем, потому что он в Хроме только для вебстраниц, и он синхронный, а аппы пользуются более мощным инструментом, асинхронным сториджем (chrome.storage.local.get/set)
он очень быстрый, но все таки, пару миллисекунд проходит, пока данные извлекаются или пишутся
поэтому, типа, шо делать - контроллер запускается, билдит вью, знает какие данные нужно достать из сториджа, но их в данный момент еще нет
можно конечно повесить хук на событие "данные получены"
а можно - пользоваться промисами
Лепота!
он очень быстрый, но все таки, пару миллисекунд проходит, пока данные извлекаются или пишутся
поэтому, типа, шо делать - контроллер запускается, билдит вью, знает какие данные нужно достать из сториджа, но их в данный момент еще нет
можно конечно повесить хук на событие "данные получены"
а можно - пользоваться промисами
"use strict"; testApp.controller( 'TestCtrl', ['$scope', 'SettingsGetter', function($scope, SettingsGetter) { SettingsGetter.getData().then(function(items){ $scope.width = items.maxWidth; $scope.optionsCount = items.optionsCount; }); }]); testApp.factory('SettingsGetter', ["$q", function($q) { return { getData: function() { var data = $q.defer(); chrome.storage.local.get( { maxWidth: 333, optionsCount: 4 }, function(items) { data.resolve(items);} ); return data.promise; } }; }]);
Лепота!