добавление\удаление в\с избранных

252
11 февраля 2017, 09:25

Здравствуйте! Есть контроллер по работе с сервисами(услуги). В него необходимо допилить задачу удаления и добавления в избранное сервисов. Я вот не знаю как лучше это сделать. Нужно передавать на бек айди по клику на сервис, или как то в $scope все записывать и отдавать\принимать массивом (нужно будет еще потом выводить конечно же список избранных в отдельной категории). Так же наверное нужно отдавать айди пользователя?

код контроллера

ServicesCtrl.$inject = ['$rootScope', '$scope', '$state', '$stateParams', 'PortalApi', 'Locations', 'configs'];
function ServicesCtrl($rootScope, $scope, $state, $stateParams, PortalApi, Locations, configs) {
    var categoryId = $stateParams.categoryId;
    $scope.category = $stateParams.categoryId;
    $scope.searchServices = search;
    $scope.subscribe = $stateParams.subscribe;
    init();
    var off = 12;
    $scope.loadMore = function() {
        $scope.preLoader = true;
        var data = {
            category: !categoryId || categoryId === 'all' ? 0 : parseInt(categoryId),
            sortByPayments: true,
            offset: off
        };
        data.location = Locations.location.id;
        if ($stateParams.subscribe) {
            data.twoStep = true;
        }
        PortalApi.searchServices(data)
            .then(function(response) {
                $scope.services = $.merge($scope.services,response);
                $scope.preLoader = false;
                if(response.length < 12){
                  $scope.services_new = false;
                }else{
                    $scope.services_new = true;
                }
                off = off + 12;
            })
    };
    function search(query) {
        var data = {
            query: query,
            category: !categoryId || categoryId === 'all' ? 0 : parseInt(categoryId),
            sortByPayments: true
        };
        data.location = Locations.location.id;
        off = 12;
        $scope.preLoader = true;
        if ($stateParams.subscribe) {
            data.twoStep = true;
        }
        PortalApi.searchServices(data)
            .then(function(response) {
                $scope.services = response;
                if(response.length < 12){
                  $scope.services_new = false;
                }else{
                    $scope.services_new = true;
                }
                $scope.preLoader = false;
            })
    }
    $scope.toService = function(serviceId) {
        var data = {
            serviceId: serviceId,
            fields: [],
            amount: 0,
            autoCheck: false
        };
        $scope.preLoader = true;
        if ($stateParams.subscribe) {
            data.subscribe = true;
        }
        $state.go('pages.payment', data);
    };
    $scope.nonContractExternal = function() {
        var nonContractExternal = configs.payments_config.service.nonContractExternal;
            data = {
                serviceId: nonContractExternal
            };
        $state.go('pages.payment', data);
    };
    //favorites
           /* $http.get('http://localhost:3001/services')
                .success(function (result) {
                    console.log('success', result);
                    $scope.services = result;
                })
                .error(function (result) {
                    console.log('error');
                });*/
    $scope.addFavorite = function(serviceId) {
       //......
    };
    //end favorites
    function init() {
        search($scope.query);
    }
    var listenerChangeLang = $rootScope.$on('changeLang', init);
    var listenerChangeLocation = $rootScope.$on('changeLocation', init);
    $scope.$on('$destroy', function () {
        listenerChangeLang();
        listenerChangeLocation();
    });
}
module.exports = ServicesCtrl;

код html переключения по категориям

<ul class="serv-tree-nav">
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 'all'})"><span class="pic"><img src="../images/serv-tree-item-1.svg" alt=""></span><span class="text">{{'PAYMENTS.ALL_PAYMENTS' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.cardtocard"><span class="pic"><img src="../images/serv-tree-item-2.svg" alt=""></span><span class="text">{{'PAYMENTS.CARD_TO_CARD' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 33})"><span class="pic"><img src="../images/serv-tree-item-3.svg" alt=""></span><span class="text">{{'PAYMENTS.MOBILE' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 44})"><span class="pic"><img src="../images/serv-tree-item-4.svg" alt=""></span><span class="text">{{'PAYMENTS.HOSTING' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 39})"><span class="pic"><img src="../images/serv-tree-item-5.svg" alt=""></span><span class="text">{{'PAYMENTS.WEBMONEY' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 34})"><span class="pic"><img src="../images/serv-tree-item-6.svg" alt=""></span><span class="text">{{'PAYMENTS.INTERNET' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 40})"><span class="pic"><img src="../images/serv-tree-item-7.svg" alt=""></span><span class="text">{{'PAYMENTS.GAMES' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 37})"><span class="pic"><img src="../images/serv-tree-item-8.svg" alt=""></span><span class="text">{{'PAYMENTS.COMMUNAL' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ui-sref="pages.services({categoryId: 38})"><span class="pic"><img src="../images/serv-tree-item-9.svg" alt=""></span><span class="text">{{'PAYMENTS.CREDIT' | translate}}</span></a></li>
                        <li ui-sref-active="active"><a ng-click="nonContractExternal()"><span class="pic"><img src="../images/recvizits.svg" alt=""></span><span class="text">{{'PAYMENTS.RECVIZ' | translate}}</span></a></li>
                        <li ui-sref-active="active" ng-if="auth.user"><a ui-sref="pages.services({categoryId: 'favorites'})"><span class="pic"><img src="../images/serv-tree-item-9.svg" alt=""></span><span class="text">{{'PAYMENTS.FAVORITE' | translate}}</span></a></li>
                    </ul>
READ ALSO
Динамическое создание суммы

Динамическое создание суммы

Здравствуйте! Есть динамически создаваемый блок

266
Как определить день и месяц следующего понедельника?

Как определить день и месяц следующего понедельника?

На странице нужно выводить дату следующего понедельникаНапример

276
Как обновить день и месяц следующего понедельника в определенное время?

Как обновить день и месяц следующего понедельника в определенное время?

Для вывода дня и месяца следующего понедельника используется код:

258
Почему не работает Intercooler после Ajax запроса?

Почему не работает Intercooler после Ajax запроса?

Речь об этой библиотекеПодключил ее

286