angularjs - 如何动态添加 ng-click 处理程序

标签 angularjs dynamic angularjs-ng-click

我尝试在(动态)之前生成的按钮上添加 ng-click,但效果不佳。此外,我已经尝试了在这个论坛上找到的所有解决方案,但没有一个能很好地工作。

我的html代码:

<body class="max_height" ng-app="myApp">
    <div class="container max_height" ng-controller="myCtrl">
        <div id="play" tabindex="0" ng-init="init()" ng-keydown="keyDown($event)">
            {{ content }}
        </div>
    </div>

    <script src="js/angular.min.js"></script>
    <script src="js/script.js"></script>
</body>

我的 AngularJS 代码:
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope, $compile) {
  $scope.init = function() {
    var el = '<button class="btn" id="start" data-ng-click="startAnimation()">Start</buttom>';
    var element = angular.element(document.querySelector('#play'));
    var generated = element.html(el);
    $compile(generated)($scope);
}
$scope.startAnimation = function(){
        console.log("click");
}
});

我的错误是“RangeError: Maximum call stack size exceeded”,这是由 $compile(generated)($scope); 生成的; .从第一个衍生而来的另一个问题是,如果我单击按钮,则函数 startAnimation 将执行数百次。

请给我一个解决方案。错在哪里。

最佳答案

问题在于这行代码:

$compile(generated)($scope);

相反,它应该是:
$compile(generated.contents())($scope);

关于angularjs - 如何动态添加 ng-click 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34498558/

相关文章:

AngularJS - 显示和隐藏多个内容

javascript - 单击按钮时在两个功能之间切换。

java - Selenium Webdriver - 从 li/a 查找动态 id

javascript - 如何在angularjs中访问组件内的父 Controller 数据

angularjs - Contenteditable 与 ng-model 不起作用

Angularjs data-ng-show 不起作用

C#4 : Dynamic and Nullable<>

php - 使用 php dom 创建动态元素

javascript - 防止 Angular Ng-Click 上的区域标签页面重新加载

javascript - 另一个里面的 ui-view 不显示