В настоящее время я использую Worklight 6.2 для разработки гибридного приложения для iOS, Android и Windows 8 благодаря Ionic Framework (на основе AngularJS). На данный момент я разработал большую часть своего приложения без каких-либо проблем, но сегодня я начал думать об использовании JSONStore для сохранения и защиты моих локальных данных (мое приложение можно использовать в автономном режиме).
Поэтому до сих пор я использовал области и корневую область Angular для обновления своей DOM благодаря привязке данных, как мы всегда делаем с Angular. Например, я создаю новый элемент с помощью HMI, и благодаря привязке данных мои объекты немедленно отображаются в моем приложении без необходимости что-либо перезагружать, а мои объекты Javascript обновляются последними значениями.
Теперь, когда я хочу подключить JSONStore, я столкнулся со следующей проблемой: каков наиболее последовательный и надежный способ для моего приложения синхронизировать JSONStore с моей корневой областью, чтобы каждый раз, когда я получаю новые обновления в своей области, JSONStore также обновляется и, таким образом, данные сохраняются и защищаются на устройстве (и готовы к синхронизации с моим бэкэндом).
Моя абсолютная ссылка должна быть JSONStore, так как это мое официальное надежное решение для постоянного хранения данных (и шифрования). Лучше всего, чтобы мое приложение использовало мою коллекцию JSONStore «в качестве корневой области», но, насколько я знаю, это невозможно сделать с Angular (на самом деле я не проверял, так как это звучит очень неправильно). В итоге я подумал, что мне нужно поддерживать 2 коллекции: мой JSONStore и мою корневую область. Это означает, что каждый раз, когда что-то изменяется в корневой области, я должен применить это к JSONStore. Чтобы упростить обслуживание, я думаю о наблюдении за основным объектом моей корневой области с помощью слушателя $watch, чтобы каждый раз, когда моя корневая область изменяется, я уничтожал свой JSONStore с последним значением моей корневой области. Что-то вроде этого :
$scope.$watch(function(){
// Object to be watched
return $rootScope.myObject;
}, function(newValue, oldValue){
// Here, destroy the collection and init it again with the newValue object
});
Меня немного беспокоит производительность наблюдения за этим объектом в течение всего жизненного цикла моего приложения. Даже если объект не будет изменяться очень часто, объект может быть "довольно" большим (50kb). Кроме того, я не уверен, что JSONStore действительно нравится каждый раз уничтожать свои коллекции. Но не использовать это означало бы определять «места модификации» для обновления JSONStore каждый раз, когда в мою корневую область вносятся изменения. Это может сработать, но на самом деле не оптимально, так как нам нужно привыкнуть к дублированию исходного кода (1 для области видимости, 1 для JSONStore).
Ну, это беспокоит меня, потому что я не могу найти действительно жизнеспособное решение, поэтому, если у вас есть идеи/лучшие практики по этому поводу, не стесняйтесь поделиться!
Спасибо