Javascript 如何将表情符号应用于Angularjs指令列表?
我正在学习Angular JS,目前正在做一个聊天应用程序,我想将Emojione提供的Javascript转换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}}
.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>