如何将 <ng-click> 放入 Endpoint.java 中的字符串并将此字符串发送回客户端?
Posted
技术标签:
【中文标题】如何将 <ng-click> 放入 Endpoint.java 中的字符串并将此字符串发送回客户端?【英文标题】:How to put <ng-click> in string in Endpoint.java and send this string back to client side? 【发布时间】:2017-02-27 13:32:54 【问题描述】:我正在开发一个Chat application
,它在Web Socket protocol
中的登录用户之间传递消息。在某些用户发送的与他人聊天的消息中,我想为其添加一些设计,以便可以选择回复它。我试图为这条消息嵌套到链接reply
和其中的angular
标签ng-click
,这将为用户打开一个modal reply
(如下所示)。
ng-click
的内容是一个函数,它获取用户想要回复的消息 ID 作为输入。
我的问题是,当单击reply
时,会为用户打开回复模式,但从未调用此函数!
这是我在ChatEndPoint.java
中的代码:
String m="<div>
<div>" +
_content
+ "</div>
<a href='#' data-toggle='modal' data-target='#replyModal'
ng-click='storemsgid("+_msgid+")'><small>reply</small></a>
</div> ";
注意事项:
_content
有一个字符串值,_msgid
有一个整数值。
_content
出现在聊天控制台中。
在 html 页面中有一个函数 storemsgid(id)
并且它可以工作(相信我这不是导致问题的原因:))。
新消息将插入到聊天控制台中(即div
标签),这条消息有自己的ng-controller
,它包含函数storemsgid(id)
。
请帮助我或指导我。
谢谢
【问题讨论】:
【参考方案1】:使用 ng-bind-html directive 从控制器插入 HTML:
<body ng-app="myApp" ng-controller="myVm as vm">
<h1>Binding a click handler to AngularJS</h1>
<p>vm.rawMsg</p>
<div ng-bind-html="vm.msg"></div>
</body>
JS:
app.controller("myVm", function($sce)
var vm = this;
vm.rawMsg = '<button onclick="angular.element(this).scope().vm.alert(99)">Alert 99</button>'
vm.msg = $sce.trustAsHtml(vm.rawMsg);
vm.alert = (x) => alert(x);
)
ng-bind-html
指令不会编译 AngularJS 指令,例如 ng-click
。而是使用onclick attribute 和angular.element 来调用作用域函数:
<button onclick="angular.element(this).scope().vm.alert(99)">
Alert 99
</button>
DEMO on PLNKR。
【讨论】:
以上是关于如何将 <ng-click> 放入 Endpoint.java 中的字符串并将此字符串发送回客户端?的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs ng-click:如何获取`this`数据?
AngularJS 将字符串作为函数传递给 ng-click