【发布时间】:2014-07-30 16:23:10
【问题描述】:
我正在运行一个带有 Angular.js(版本 1.2.21)和 Socket.io 的网络应用程序,用于基于图像的简单聊天。 (点击图片,图片链接会发送给聊天室中的其他人)。消息被添加到 $scope.messages 并循环:
<div ng-repeat="message in messages">
<p>{{message.user}}</p>
<p ng-bind-html="message.text | unsafe"></p>
<p>{{message.time}}</p>
<hr>
</div>
{{message.text}} 类似于 "<img src='/img/test.png'>"
为了在 Angular 中渲染图像,我向 {{message.text}} 添加了“不安全”清理过滤器:
.filter('unsafe', function($sce) {
return function(val) {
return $sce.trustAsHtml(val);
};
})
除了运行 Safari/iOS7 的设备(iphone、ipad)之外,所有设备(安卓、桌面)上的图像加载速度都非常快。
当用户的新聊天被添加到聊天的 $scope.messages 提要(通过推送到 $scope.messages 数组的末尾)时,它不会显示经过清理的<img>(它是空白的),但会显示在提要中显示其他消息信息{{message.user}} 和{{message.time}}。
大约 10 秒后,净化后的 <img> 可能会加载到设备上,但并非总是如此。
如果有来自其他设备的聊天,那么所有未渲染的图像都会突然正常显示。
【问题讨论】:
标签: javascript ios angularjs safari socket.io