使用AngularJS click事件添加的动态内容对添加的内容无效

使用AngularJS click事件添加的动态内容对添加的内容无效,angularjs,angularjs-ng-click,dynamic-html,Angularjs,Angularjs Ng Click,Dynamic Html,本周我刚开始一个新项目,我必须尽快跟上进度 我的要求之一是动态添加html内容,该内容可能会有一个点击事件 下面的代码显示了一个按钮,当点击时,它会动态地添加另一个按钮。单击动态添加的按钮,应该添加另一个按钮,但我无法使用ng click来处理动态添加的按钮 单击我 工作代码示例在这里 var-app=angular.module('plunker',[]); 应用程序控制器('MainCtrl',函数($scope){ $scope.name='World'; $scope.addButt

本周我刚开始一个新项目,我必须尽快跟上进度

我的要求之一是动态添加html内容,该内容可能会有一个点击事件

下面的代码显示了一个按钮,当点击时,它会动态地添加另一个按钮。单击动态添加的按钮,应该添加另一个按钮,但我无法使用ng click来处理动态添加的按钮

单击我

工作代码示例在这里

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.name='World';
$scope.addButton=函数(){
警报(“点击按钮”);
var btnhtml='单击我';
元素(document.getElementById('foo')).append((btnhtml));
}
});

安古拉斯普朗克
文件。写(“”);
你好{{name}}

点击我
app.controller('MainCtrl',函数($scope,$compile){
var btnhtml='单击我';
var temp=$compile(btnhtml)($scope);
//假设您有一个id为“foo”的元素,您想在其中创建一个按钮
元素(document.getElementById('foo')).append(temp);
var addButton=函数(){
警报(“是,单击在动态添加的元素上工作”);
}
});
您需要在此处添加
$compile
服务,该服务将
角度指令
绑定到控制器范围,如
ng click
。不要忘记在控制器中添加
$compile
依赖项,如下所示


以下是

您还可以将事件绑定到新按钮

  $scope.addButton = function() {
    alert("button clicked");
    var btnhtml = '<button type="button">Click Me</button>';
    var newButt = angular.element(btnhtml);
    newButt.bind('click', $scope.addButton);
    angular.element(document.getElementById('foo')).append(newButt);
  }
$scope.addButton=函数(){
警报(“点击按钮”);
var btnhtml='单击我';
var newButt=角度元素(btnhtml);
newButt.bind('click',$scope.addButton);
元素(document.getElementById('foo')).append(newButt);
}

更新。

只是一个小提示:从Angularjs 2.0开始,jqLite将不再是Angularjs的一部分。所以人们最好现在就开始使用jQuery。谢谢大家的快速反馈:)非常感谢,这是一个很好的帮助,你说的“foo”是什么意思?我发现,这里调用document.getElementById('foo').append(temp)是唯一完整的答案。我觉得addButton应该是像$scope.addButton=function(){….}哟,它很管用。你成功了!
  $scope.addButton = function() {
    alert("button clicked");
    var btnhtml = '<button type="button">Click Me</button>';
    var newButt = angular.element(btnhtml);
    newButt.bind('click', $scope.addButton);
    angular.element(document.getElementById('foo')).append(newButt);
  }