javascript - Angular ng-click 不适用于 $compile

标签 javascript angularjs angularjs-directive angularjs-ng-click

我有类似于以下代码的代码来触发 Angular 应用程序中的 click 事件。为什么事件没有触发?

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!');
        };
    }
}
})

最佳答案

像这样改变你的编译语句:

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

您传递的 DOM 字符串 childElement 实际上不是 DOM 元素,而是一个字符串。但是 $compile 需要 DOM 元素来实际编译内容。

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>

关于javascript - Angular ng-click 不适用于 $compile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192718/

相关文章:

javascript - 如何在网站登录完成之前隐藏 WebView? [ native react ]

javascript - AngularJS - 获取指令中的过滤器长度

javascript - 页面转换后调用 jquery 事件

javascript - facebook api - 失去我的范围

javascript - 圆 Angular 并突出显示所选的一个

javascript - 在实例化 Controller 之前未解析 JSON 对象

javascript - 在 AngularJS 中禁用不需要的验证(条件验证)

javascript - AngularJS : directive scope

javascript - 如何制作一个 <canvas> 以便用户能够在其中绘图?使用 jQuery/JavaScript

javascript - Angular JS Android 应用程序默认参数的意外标记