i have following markup
<li ng-repeat="ticket in tickets"> <span>{{ticket.name}} - {{ticket.price}}</span> <input type="number" value="1" ng-disabled="!ticket.selected" size="2" style="width:34px;" ng-change="ticket.quantity" ng-model="ticket.quantity"/> <input type="checkbox" name="choose" ng-click="addtocart($event)" ng-model="ticket.selected" ng-if-false="false" ng-if-true="true" value="{{ticket.id}}"/> </li> then have on addcart()
$scope.addtocart() = function(){ var template = '<fieldset id="ticket-'+this.ticket.id+'">' + '<input type="hidden" name="item_name_'+$scope.counter+'" value="'+this.ticket.name+'">' + '<input type="hidden" name="amount_'+$scope.counter+'" value="'+this.ticket.price+'">' + '<input type="hidden" name="on0_'+$scope.counter+'" value="quantity">' + '<input type="hidden" name="os0_'+$scope.counter+'" value="'+this.ticket.quantity+'"></fieldset>', $el = angular.element('#payform').append(template).find('input[name=os0_' + $scope.counter +']'); $scope.$watch(this.ticket.quantity,function(){ console.log(this, 'this', arguments); console.log('ticket',ticket); console.log($el.attr('name')); }) return false; } i'm trying dynamically watch changes in passed model update dynamically created form elements.
how can achieve , how heavy keep adding , removing event if element no longer exists?
you heading in hardest direction. should add template @ view using ng-repeat, not creating elements inside controller, whats represent worst pratice ever. should add tickets inside array, addedtickets exemple , let angularjs hardest job: render dinamically!
for exemple:
view
<input type="checkbox" name="choose" ng-click="addtocart(ticket, $index)" ng-if-false="false" ng-if-true="true" ng-model="ticket.selected" /> <fieldset id="ticket-{{t.id}}" ng-repeat="t in addedtickets"> <input type="hidden" name="item_name_{{$index}}" ng-model="t.name"> <input type="hidden" name="amount_{{$index}}" ng-model="t.price"> <input type="hidden" name="on0_{{$index}}" ng-model="t.quantity"> </fieldset> controller
$scope.addtocart(ticket, index) { if(ticket.selected) $scope.addedtickets.push({name: ticket.name, quantit: ticket.quantity, /*etc*/}); else //delete }
Comments
Post a Comment