0

I have an app that everytime a user click that a tag, i want to the the id of the product click and put it in an array.

this is my view

<ion-view view-title='Products'>
<ion-content>
    <div class="row">
        <div class="col col-25" ng-repeat="row in products">
            <a href="#/main/tickets/{{row.productId}}" class="button button-block button-light">{{row.product}}<br/><small>{{row.price | currency}}</small></a>
        </div>
    </div>
</ion-content>

as you can see i get the row.productId of the product. now in my app.js i have this.

this is my app.js

.state('main.tickets', {
            url: '/tickets/:productId',
            views: {
                'tickets': {
                    templateUrl: 'templates/tickets.html',
                    controller:  'ticketsController'
                }
            }
        })

I'm getting the productId as an url parameter.

this is my controller.

.controller('ticketsController', function($scope, $localStorage, $stateParams){

var tickets = [];

tickets.push($stateParams.productId);

console.log(tickets);

})

the tickets array is suppose to get the id which is working, but everytime i click a new productId the array value resets, because it keeps on hitting the var tickets declaration. i want to somehow store all the productId in the tickets array, but i cannot find a way to do it without resetting the tickets arrray.

1

1 Answer 1

1

Your problem is that you are using a controller to store your tickets array. Each time you get to a ticket page, a new controller is created with a new $scope attached to it.

One simple solution to your problem is storing the tickets array in a service which will persist over the different pages.

.service('ticketModel',function() {
    var self = this;
    self.ticketArray = [];
}

.controller('ticketsController', function($scope,$statePrams,ticketModel) {
    ticketModel.ticketArray.push($stateParams.productId);
    console.log(ticketModel.ticketArray);
})
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.