Angular ng-click doesn't work with $compile


freddy83

I have code similar to the following code to trigger events in an clickAngular app . Why doesn't the event fire?

var app = angular.module("myApp", [])

app.directive('myTop',function($compile) {
return {
    restrict: 'E',
    template: '<div></div>',
    replace: true,
    link: function (scope, element) {
        var childElement = '<button ng-click="clickFunc()">CLICK</button>';
        element.append(childElement);
        $compile(childElement)(scope);

        scope.clickFunc = function () {
            alert('Hello, world!');
        };
    }
}
})
Shashank Agrawal

Change your compile statement like this:

$compile(element.contents())(scope);

You are passing a DOM string childElement, which is not actually a DOM element, but a string. But the $compileDOM element is required to actually compile the content.

var app = angular.module("myapp", []);

app.directive('myTop', ['$compile',
  function($compile) {
    return {
      restrict: 'E',
      template: '<div></div>',
      replace: true,
      link: function(scope, element) {
        var childElement = '<button ng-click="clickFunc()">CLICK</button>';
        element.append(childElement);
        $compile(element.contents())(scope);

        scope.clickFunc = function() {
          alert('Hello, world!');
        };
      }
    }
  }
])
<html>

<body ng-app="myapp">
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
  <my-top></my-top>
</body>

</html>

Related


Angular ng-click doesn't work with $compile

freddy83 I have code similar to the following code to trigger events in an clickAngular app . Why doesn't the event fire? var app = angular.module("myApp", []) app.directive('myTop',function($compile) { return { restrict: 'E', template: '<div></div>',

Angular ng-click doesn't work with $compile

freddy83 I have code similar to the following code to trigger events in an clickAngular app . Why doesn't the event fire? var app = angular.module("myApp", []) app.directive('myTop',function($compile) { return { restrict: 'E', template: '<div></div>',

Angular ng-click doesn't work with $compile

freddy83 I have code similar to the following code to trigger events in an clickAngular app . Why doesn't the event fire? var app = angular.module("myApp", []) app.directive('myTop',function($compile) { return { restrict: 'E', template: '<div></div>',

Angular ng-click doesn't work with $compile

freddy83 I have code similar to the following code to trigger events in an clickAngular app . Why doesn't the event fire? var app = angular.module("myApp", []) app.directive('myTop',function($compile) { return { restrict: 'E', template: '<div></div>',

Ng-Click doesn't work with Compile directive

complex I'm writing a fairly simple AngularJS directive which is a button. The basic instruction does look like this: officeButton.directive('officeImageButton', function() { return { restrict: 'E', replace: false, scope: {

Angular ng-class doesn't compile/work

Maximilian 1986 The ng-class directive does not compile and is visible in the inspector at runtime. script export class TotalPage { showClass: boolean; constructor(public navCtrl: NavController ,public http: Http) { this.showClass = false; }

Angular $compile on scope with ng-repeat doesn't work

Calvin I have a directive that uses a $compileservice to generate a template . Even if I explicitly set the array in the range, the select option is not used ng-optionsor generated . Why doesn't it work? This gives me a blank field with no selection .ng-repeat

Angular toggle variable in ng-click doesn't work

amnesia I have a table that lists customers, and for customers that also have a list of customers, the user can click on the table row to display that list. HTML looks like this: <tbody ng-repeat ="item in customers | clientSettingsFilter:customerId">

ng-click doesn't work in angular-ui-grid

username I'm trying to fire a click event when a cell in ui-grid is clicked but ng-click is not working. Also ng-class doesn't work, I can't get width: "*" works fine. Does anyone know any accurate documentation for angular-ui-grid ? I am using angular v 1.5.1

Angular-js: ng-click doesn't work

Shiva Since I'm very new to angular js, I'm trying to develop small applications, but I'm stuck because ng-click is not working. please help. Thanks in advance. Here is my code: HTML file: <html ng-app="MyApp"> <head> <title>Angular Demo App</title>

ng-click doesn't work in angular js

Himanshu N Tatariya I am using Angular js from one of my projects and calling the "ng-click" function as follows <a ng-click="logout'{{x.ParentEntityId['#text']}}')" target="_blank">{{x.Title["#text"]}}</a> In "x.ParentEntityId['#text']" the value is "7560183

Angular-js: ng-click doesn't work

Shiva Since I'm very new to angular js, I'm trying to develop small applications, but I'm stuck because ng-click is not working. please help. Thanks in advance. Here is my code: HTML file: <html ng-app="MyApp"> <head> <title>Angular Demo App</title>

Angular JS ng-click doesn't work in child element

Tantrop I'm trying to toggle a variable when an element in the DOM is clicked, but I'm getting some weird behavior. Full example is here Essentially, if I click ng on the .options div and then leave the controller on the .options-tab div, the event fires (but

Angular toggle variable in ng-click doesn't work

amnesia I have a table that lists customers, and for customers that also have a list of customers, the user can click on the table row to display that list. HTML looks like this: <tbody ng-repeat ="item in customers | clientSettingsFilter:customerId">

Calling function with angular ng-click doesn't work

Program 345 I am trying to switch the view from one page to another when a button is pressed. I'm using ng-click but it doesn't switch views when the button is pressed .js file $scope.onCreateAppointment = function () { $scope.templates.myTempla

ng-click doesn't work in angular js

Himanshu N Tatariya I am using Angular js from one of my projects and calling the "ng-click" function as follows <a ng-click="logout'{{x.ParentEntityId['#text']}}')" target="_blank">{{x.Title["#text"]}}</a> In "x.ParentEntityId['#text']" the value is "7560183

ng-click doesn't work in angular-ui-grid

username I'm trying to fire a click event when a cell in ui-grid is clicked but ng-click is not working. Also ng-class doesn't work, I can't get width: "*" works fine. Does anyone know any accurate documentation for angular-ui-grid ? I am using angular v 1.5.1

ng-click doesn't work in angular-ui-grid

username I'm trying to fire a click event when a cell in ui-grid is clicked but ng-click is not working. Also ng-class doesn't work, I can't get width: "*" works fine. Does anyone know any accurate documentation for angular-ui-grid ? I am using angular v 1.5.1

Angular-js: ng-click doesn't work

Shiva Since I'm very new to angular js, I'm trying to develop small applications, but I'm stuck because ng-click is not working. please help. Thanks in advance. Here is my code: HTML file: <html ng-app="MyApp"> <head> <title>Angular Demo App</title>

Angular-js: ng-click doesn't work

Shiva Since I'm very new to angular js, I'm trying to develop small applications, but I'm stuck because ng-click is not working. please help. Thanks in advance. Here is my code: HTML file: <html ng-app="MyApp"> <head> <title>Angular Demo App</title>

Calling function with angular ng-click doesn't work

Program 345 I am trying to switch the view from one page to another when a button is pressed. I'm using ng-click but it doesn't switch views when the button is pressed .js file $scope.onCreateAppointment = function () { $scope.templates.myTempla

Angular JS ng-click doesn't work in child element

Tantrop I'm trying to toggle a variable when an element in the DOM is clicked, but I'm getting some weird behavior. Full example is here Essentially, if I click ng on the .options div and then leave the controller on the .options-tab div, the event fires (but

ng-click="tab=$index" doesn't work in angular

cubic I have this in my app: <li ng-repeat="name in tabs track by $index" ng-class="{selected: tab==$index}" ng-click="tab = $index">{{name}}</li> and it doesn't work, when i click on the item the selected class is enabled (every li clicked has the class, cli

ng-click doesn't work in angular js

Himanshu N Tatariya I am using Angular js from one of my projects and calling the "ng-click" function as follows <a ng-click="logout'{{x.ParentEntityId['#text']}}')" target="_blank">{{x.Title["#text"]}}</a> In "x.ParentEntityId['#text']" the value is "7560183

angular $compile doesn't work

Miguel Cantó Bataller I need to dynamically add a button to my html code. The thing is, it has an angular link inside it that doesn't work as soon as the page loads. I've been researching and it appears that I need to use $compile for this to work. Here are th

$compile doesn't work with ng-repeat

saharqam I have two views in my app that display and manage a list called "categories", I use the same template for two different views in my app. In the first view, I want to give the user "edit" permission, and in the other view, I don't want the "edit" butt