Задать вопрос
lega111
@lega111
DevOps

Как сделать обновляемый json в мобильном приложении?

Всем привет.
Вопрос такой. Есть мобильное приложение (ionic). Так как он напрямую работать с БД не может, сервер отдает json с нужными параметрами.
В приложении он записывается в файл resource.json
Как можно сделать так, что бы уже запакованное в апк приложение получало и обновляло новые значения?
П.с Комменты типа пиши на нативе - не приветствуются, я бы с радостью, но заказчик дал ТЗ и надо делать
Передает такие значения -
{
  "categories": [
    {
      "id": 11,
      "title": "Chocolate",
      "items": [1,2,3,4,5,6,7,8,9,10,11,12]
    },
"items": [
	{
		"id": 12,
		"title": " Elegance Dark Chocolate",
		"article": "R-004",
		"description": "Cocoa content: 60%",
		"img": "img/content/products/Elegance_Dark_60.png",
		"item_weight": "100",
		"pack_weight": "4",
		"packing": "40 x 168bags",
		"alcohol": false,
		"ingredients": "",
		"dimensions": "315x240x117",
		"time": "18 months",
		"store": "Keep in a cool dry place."
	},


В приложении вызывается вызываю так.
<h3 class="search-results padding-horizontal" ng-show="filter.query">Search results for "{{filter.query}}":</h3>
        <div ng-repeat="cat in getCategories() | filter: categoryFilter track by cat.id" class="item-divider">
            <h1>{{cat.title}}</h1>
            <ion-list show-delete="shouldShowDelete"
                      show-reorder="shouldShowReorder"
                      can-swipe="listCanSwipe"
                      class="list-borderless">
                <ion-item ng-repeat="(id, item) in getItems(cat.items) | filter : itemsFilter | orderBy : filter.orderBy"
                          ng-class="{expanded: isExpanded(item.id)}">
                    <div class="row" ng-click="expandItem(item.id, true)">
                        <div ng-class="{'col-50': isExpanded(item.id), 'col-33': !isExpanded(item.id)}">
                            <img class="added" src="img/ic_added_green_36dp.svg" ng-show="inOrder(item.id)">
                            <!--<i class="icon added" ng-show="inOrder(item.id)"></i>-->
                            <img ng-src="{{item.img}}">
                        </div>
                        <div ng-class="{'col-50': isExpanded(item.id), 'col-67': !isExpanded(item.id)}">
                            <span class="article">{{item.article}}</span>
                            <h3>{{item.title}}</h3>
                            <p>{{item.description}}</p>
                            <p class="packaging" ng-hide="isExpanded(item.id)">
                                <i class="icon calm ion-cube"></i>
                                {{item.packing}}
                            </p>
                        </div>
                    </div>
                    <div class="detail" ng-show="isExpanded(item.id)">
                        <dl class="row">
                            <dt class="col-50">Ingredients:</dt>
                            <dd class="col-50" ng-bind-html="nl2br(item.description)"></dd>
                        </dl>
                        <div class="row spec">
                            <div class="col">
                                <i class="icon calm ion-cube"></i>
                                {{item.packing}}
                            </div>
                            <div class="col">
                                <i class="icon calm ion-arrow-resize"></i>
                                {{item.dimensions}}
                            </div>
                            <div class="col">
                                <i class="icon calm ion-android-time"></i>
                                {{item.time}}
                            </div>
                        </div>


$scope.getCategories = function() {
            return $scope.categories.filter(function(item) {
                if ($scope.filter.enableCategories && $scope.filter.categories.length) {
                    return $scope.filter.categories.indexOf(item.id) !== -1;
                }
                return true;
            });
        };

        $scope.getItems = function(id) {
            if (!angular.isArray(id)) {
                id = [id];
            }
            $scope.filter.ids = id;
            return $scope.items.filter(function (item) {
                return $scope.filter.ids.indexOf(item.id) !== -1;
            });
        };

.factory('DataProvider', function($http, $q) {
        var data = [];
        return {
            all: function(){
                var dfd = $q.defer();
                $http.get("resource.json").then(function(response){
                    data = response.data;
                    dfd.resolve(data);
                });
                return dfd.promise;
            }
        }
    })
  • Вопрос задан
  • 421 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы