Angularjs 将ng单击添加到使用angular.element创建的div

Angularjs 将ng单击添加到使用angular.element创建的div,angularjs,Angularjs,我有以下指令,它有两个子项divs。第二个div(使用angular.element创建)应该可以单击。由于我使用angular.element创建了它,所以我尝试使用attr函数添加ng click,但这不起作用。这个代码怎么了 app.directive('mydir', function () { var directive = {}; directive.restrict = 'EA';

我有以下指令,它有两个子项
div
s。第二个div(使用
angular.element
创建)应该可以单击。由于我使用
angular.element
创建了它,所以我尝试使用
attr
函数添加
ng click
,但这不起作用。这个代码怎么了

       app.directive('mydir', function () {

                var directive = {};

                directive.restrict = 'EA';

                directive.replace = true;

                directive.scope = {
                     control: '=',
                };

                directive.template = '<div id="root"></div>';

                directive.link = function (scope, element, attrs) {

                        var wrap = angular.element('<div id="wrap"></div>');
                        element.append(wrap);                               
                        var node = angular.element('<div id="node"></div>');
                        node.attr('ng-click', 'toggle()');   // <--- this doesn't work
                        wrap.append(node);

                        scope.toggle = function () {
                            alert('clicked');
                        };
                });

                return directive;

            });
应用程序指令('mydir',函数(){ var指令={}; directive.restrict='EA'; directive.replace=true; 指令范围={ 控件:“=”, }; 指令.template=''; directive.link=函数(范围、元素、属性){ var wrap=角度元素(“”); 元素。追加(包装); 变量节点=角度元素(“”);
node.attr('ng-click','toggle()');//必须使用angular的
$compile
服务编译元素:

       app.directive('mydir', function ($compile) { // added dependency here

                var directive = {};

                directive.restrict = 'EA';

                directive.replace = true;

                directive.scope = {
                     control: '=',
                };

                directive.template = '<div id="root"></div>';

                directive.link = function (scope, element, attrs) {

                        var wrap = angular.element('<div id="wrap"></div>');
                        element.append(wrap);                               
                        var node = angular.element('<div id="node"></div>');
                        node.attr('ng-click', 'toggle()');   // <--- this doesn't work
                        var content = $compile(node)(scope);
                        wrap.append(content);

                        scope.toggle = function () {
                            alert('clicked');
                        };
                });

                return directive;

            });
app.directive('mydir',function($compile){//在此处添加了依赖项
var指令={};
directive.restrict='EA';
directive.replace=true;
指令范围={
控件:“=”,
};
指令.template='';
directive.link=函数(范围、元素、属性){
var wrap=角度元素(“”);
元素。追加(包装);
变量节点=角度元素(“”);

node.attr('ng-click','toggle()');//我在'node'上执行'appendChild'失败:参数1在尝试附加
内容时不是'node'
类型。它实际上应该是
var content=$compile(node)(scope);
。我将更新答案…谢谢,它可以工作。我用答案创建了这个plunk