Javascript 使用正则表达式动态单击角度

Javascript 使用正则表达式动态单击角度,javascript,angularjs,regex,compilation,Javascript,Angularjs,Regex,Compilation,我有一个普通的字符串,比如“Lorem#ipsum…”,我想用span元素替换所有的hashtag,这些元素可以被单击并将它们的值传递给函数 所有的hashtag都是通过一个regex来检测的,所需的regex被添加到数组allregs中,数组allregs是循环的,应该替换元素 我试着: for (var i = 0; i < allregs.length; i++) { var regex = new RegExp(allregs[i], "g"); var el = "<

我有一个普通的字符串,比如“Lorem#ipsum…”,我想用span元素替换所有的hashtag,这些元素可以被单击并将它们的值传递给函数

所有的hashtag都是通过一个regex来检测的,所需的regex被添加到数组allregs中,数组allregs是循环的,应该替换元素

我试着:

for (var i = 0; i < allregs.length; i++) {
  var regex = new RegExp(allregs[i], "g");
  var el = "<span class='hashtag' ng-click='goto(" + allregs[i] + ")'>" + allregs[i] + "</span>";
  var temp = $compile(el)($scope);
  html = html.replace(regex, temp);
};
return $sce.trustAsHtml( html );
for(var i=0;i
退货在内部使用
但它会抛出一个错误(错误:$parse:lexerr Lexer错误)

它在屏幕上显示“Lorem[[object HtmlPanelment]]”。
我能做什么?

我不完全了解您的应用程序在这里发生了什么。这是指令吗?这在控制器内吗?你能再展示一下你是如何构造这个应用程序的吗?@jonback它都在控制器内部,比如
var-app=new angular.module(“app”,[]);app.controller(“MainController”,函数($scope,$sce,$compile){$scope.engine={trust:function(html){…for(var i=0;i
我建议你把它变成一个指令。一旦你这样做了,就让它直接处理正则表达式。@JonBlack发现了这个问题。allregs[I]是string类型的,所以我不得不把它改成
ng click='goto(\“”+allregs[I][0]+“\”)
真是个愚蠢的错误;)但是我按照你的建议把它变成了一个指令,谢谢你,我很高兴它能为你工作。我不完全理解你的应用程序在这里发生了什么。这是一个指令吗?这是在控制器内吗?你能展示一下你是如何构造这个应用程序的吗?@jonback它都在控制器内,就像
var应用程序一样=new angular.module(“app”,[]);app.controller(“MainController”,function($scope,$sce,$compile){$scope.engine={trust:function(html){…for(var i=0;i
我建议你把它变成一个指令。一旦你这样做了,就让它直接处理正则表达式。@JonBlack发现了这个问题。allregs[I]是string类型的,所以我不得不把它改成
ng click='goto(\“”+allregs[I][0]+“\”)
真是个愚蠢的错误;)但是我听从了你的建议,把它变成了一个指令,谢谢你,我很高兴它对你有用。