gpt4 book ai didi

javascript - 带有 ng-click 的 Angularjs 指令

转载 作者:行者123 更新时间:2023-11-27 23:32:44 24 4
gpt4 key购买 nike

我是 Angularjs 的新手,正在尝试创建一个字典指令,用于搜索文本并用 anchor 标记替换文本。搜索和替换部分工作正常,但我无法让 ng-click 工作。

HTML

<div mk-dct>Lorem ipsum [dolor] sit [amet]</div>

Angular

app.directive('mkDct', function () {
var pattern = /\[([^\]]+)\]/g;
return {
restrict: 'A',
link: function(scope, element, attrs) {
var txt = element.html();
var m = txt.match(pattern);

for(var i = 0; i < m.length; i++){
var word = m[i].substring(1, m[i].length-1);
txt = txt.replace(m[i], '<a class="dict-item" ng-click="func(\''+word+'\')" href="#">'+ word + '</a>');
}

element.html(txt);
}
};

更新
下面的注释行使其按预期工作。

app.directive('mkDct', function ($compile) {
var pattern = /\[([^\]]+)\]/g;
return {
restrict: 'A',
scope: true,
link: function(scope, element, attrs) {
var txt = element.html();
var m = txt.match(pattern);

for(var i = 0; i < m.length; i++){
var word = m[i].substring(1, m[i].length-1);
txt = txt.replace(m[i], '<a class="dict-item" ng-click="func(\''+word+'\')" href="#">'+ word + '</a>');
}

// Compile to template.
txt = $compile(txt)(scope);

// Clear and append.
element.empty().append(txt);
}
};

});

最佳答案

您需要compile你的元素。

编辑在循环后添加编译语句,如下面的注释中所述。

txt = $compile(txt)(scope);

关于javascript - 带有 ng-click 的 Angularjs 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34415885/

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