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