AngularJS ng-repeat与轨道覆盖数组

时间:2016-03-17 10:00:33

标签: html angularjs ionic-framework angularjs-ng-repeat ng-repeat

我正在使用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
}

因此,被覆盖的消息的共同元素是对象的索引属性。

非常感谢!!

0 个答案:

没有答案