我正在使用ng-repeat在离子应用中呈现对话风格。我使用track by($ index + message._id),结果与$ index使用track相同。
问题是我有一个包含文本的消息数组,其中一些是通过ng-bind-html链接的HTML。
当多个带有html的消息出现在数组中时(只需执行$ scope.messages.push(消息)就被推送到数组中),带有HTML内容的先前元素将被带有HTML内容的las消息覆盖。
我该如何避免这种行为?我正在尝试的一切都没有成功。我认为这是一种奇怪的行为。已经和AngularJS合作了一年,从来没有这样的事情。
示例:
<div ng-repeat="message in chat.messages track by ($index + message._id)">
<div class="message" ng-bind-html="message.content"></div>
</div>
在我的Javascript中,只是当消息到达时(消息可以是纯文本或html内容):
$scope.messages.push(message);
即使我删除ng-bind-html并只生成{{message.content}},呈现为纯文本的html也会在数组元素中发生变化。 每条消息都有一个$ index和一个唯一的_id,所以对我来说有点奇怪。 在每条消息中都有一个内部索引(由我制作),在被覆盖的消息中,它是相同的。例如,已呈现的第一条消息:
message1 = {
"_id": "56e6c0edd4c6df358bada4ec",
"index": 71,
"type": "trip",
"comment": "nothing to do here",
"username": "ALWAYSTHESAME",
"has_user_input": false,
"nextIndex": 40,
"user_inputs": [ ],
"mood_0": [ ],
"content": Irrelevant html content
}
message2 = {
"_id": "56e6c0edd4c6df358bada4ed",
"index": 71,
"type": "trip",
"comment": "nothing to do here",
"username": "ALWAYSTHESAME",
"has_user_input": false,
"nextIndex": 40,
"user_inputs": [ ],
"mood_0": [ ],
"content": Other irrelevant html content
}
因此,被覆盖的消息的共同元素是对象的索引属性。
非常感谢!!