Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将表情符号应用于Angularjs指令列表?_Javascript_Html_Angularjs_Emoji - Fatal编程技术网

Javascript 如何将表情符号应用于Angularjs指令列表?

Javascript 如何将表情符号应用于Angularjs指令列表?,javascript,html,angularjs,emoji,Javascript,Html,Angularjs,Emoji,我正在学习Angular JS,目前正在做一个聊天应用程序,我想将Emojione提供的Javascript转换.shortnameToImage(str)应用到我前端聊天应用程序中的消息列表中 这是在我的html索引中显示的消息 <ul> <li ng-repeat="message in messages track by $index"> {{message}} </li> </ul> {{message}}

我正在学习Angular JS,目前正在做一个聊天应用程序,我想将Emojione提供的Javascript转换
.shortnameToImage(str)
应用到我前端聊天应用程序中的消息列表中

这是在我的html索引中显示的消息

<ul>
  <li ng-repeat="message in messages track by $index">    
    {{message}}
  </li>
</ul>
  • {{message}}
因此,我的意图是,
{{message}}
中的所有内容都得到评估,因此如果另一个用户发送:smile:smile表情符号显示出来,而不涉及后端

到目前为止,我已经尝试使用一个javascript函数来评估用户输入,并将其转换为
li
元素,但可以处理第一条消息


解决这个问题的最佳方法是什么?

编辑以反映塞尔吉奥的评论

Javascript是一种很好的方法。您可以使用

var array_of_li =  document.querySelectorAll("ul.messages li");
然后,您可以使用一个简单的循环来转换它们

var array_of_li = document.querySelectorAll("ul.messages li");
for (var i = 0; i < array_of_li.length; i++) {
    convert(array_of_li[i]);
}

我把所有这些都放在这里,它显示了一个很好的表情微笑。

看看他们的文档,它非常简单,没有任何问题(如果你能正确安装它,就是这样)

  • {{emojione.shortnameToImage(message)}

真正的方法是自己创建一个
过滤器(),或者使用现有的过滤器。然后使用就简单到
{message | emoji}

这不是他的意思。另外,你可能是指
eval
,而不是
evaluate
。我在你的评论后更新了我的帖子,我希望我对这个问题提供了一个好的答案。这是一个改进,但不是一个真正的好答案。他使用棱角分明的语言。从下面手动管理DOM是一种反模式。角度应该一直用,没错。根据他的博文,他也试图这样做,所以这段代码仍然有帮助。我在角度方面没有太多的经验,所以我将把它留给专业人士。感谢这个方向似乎是最合乎逻辑的。我试着使用它,但假设我发送了一个:微笑:我应该找回微笑表情符号,对吗?我得到的回报是微笑,知道会发生什么吗?这是意料之中的,正如我在回答中使用双大括号时,HTML被转义,从而输出源代码。Angular表情符号过滤器希望您改用
ng bind html unsafe=“message | emoji”
。它将不转义地输出原始HTML。但是你需要考虑到安全问题——非常感谢,使用这个过滤器采取了一种略微不同的方法,因为我也使用expressjs,所以我没有提供模块文件,它现在可以工作了。再次感谢!
function convert(li_html) {
    var input = li_html.innerHTML;
    var output = emojione.shortnameToImage(input);
    li_html.innerHTML = output;
}
<ul>
   <li ng-repeat="message in messages track by $index">    
      {{ emojione.shortnameToImage(message) }}
   </li>
</ul>