3

I have this function in Angular where I add a new slide with a ng-click in it.

var addSlide = function($scope, slideIndex, $event) {
  slideIndex++;
  var slider = angular.element('.slick-slider');
  var currentSlide = slider.slick('slickCurrentSlide');
  slider.slick('slickAdd', '<div class="slide" ng-click="addPhoto(); $event.stopPropagation();"><input type="file" class="camera-trigger" accept="image/*"><img class="photo-img" src="" /></div>');
};

Unfortunately dynamically created ng-click events don't work (ng-click not working from dynamically generated HTML), how can I fix this in my case, since it's a function inside a controller, instead of a directive?

1 Answer 1

19

you need to add $compile service here, that will bind the angular directives like ng-click to your controller scope.Something like:

var divTemplate = '..your div template';
var temp = $compile(divTemplate)($scope); 

Then append it to the HTML:

angular.element(document.getElementById('foo')).append(temp);

You can also bind the event to the div as following:

 var div = angular.element("divID");
 div.bind('click', $scope.addPhoto());
Sign up to request clarification or add additional context in comments.

7 Comments

Thanks man. Binding wouldn't be that nice since it would require unique classes/ids. How would the $compile service work?
var divTemplate = '..your div template'; var temp = $compile(divTemplate)($scope); Then append it to the HTML" angular.element(document.getElementById('foo')).append(temp);
does it possible to add $compile inside Service and its showing error like 'SCRIPT5007: Object expected'
Could you please explain more?
what if I don;t want to append this code in my html, as i am using it in DataTable so I am not able to add it ti html.... What should I do now ?
|

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.