gpt4 book ai didi

javascript - Angularjs:在指令中附加一个点击事件

转载 作者:行者123 更新时间:2023-11-30 17:50:34 25 4
gpt4 key购买 nike

我在这里找到了一个很棒的树指令。 原文:http://jsfiddle.net/n8dPm/

我正在尝试附加点击处理程序。我将它添加到 p 元素,如下所示,但它不起作用。出了什么问题:

代码 http://jsfiddle.net/tHh5M/2/

module.directive("tree", function($compile) {
return {
restrict: "E",
scope: {family: '='},
template:
'<p ng-click="testme()">{{ family.name }}</p>'+
'<ul>' +
'<li ng-repeat="child in family.children">' +
'<tree family="child"></tree>' +
'</li>' +
'</ul>',
compile: function(tElement, tAttr) {
var contents = tElement.contents().remove();
var compiledContents;
return function(scope, iElement, iAttr) {
if(!compiledContents) {
compiledContents = $compile(contents);
}
compiledContents(scope, function(clone, scope) {
iElement.append(clone);
});
};
},
link: function (scope, elm, attrs) {
scope.testme = function () {
console.log('testme')
};
}
};
});

最佳答案

您从编译函数返回的函数是链接函数。去掉 link 属性并将 scope.testme 向上移动到编译函数返回的函数中。

    compile: function (tElement, tAttr) {
var contents = tElement.contents().remove();
var compiledContents;
return function (scope, iElement, iAttr) {
if (!compiledContents) {
compiledContents = $compile(contents);
}
compiledContents(scope, function (clone, scope) {
iElement.append(clone);
});
scope.testme = function () {
console.log('testme')
};
};
}

http://jsfiddle.net/tHh5M/3/

关于javascript - Angularjs:在指令中附加一个点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com