Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS ng repeat隐藏重复项(如果不是对象)_Javascript_Arrays_Json_Angularjs - Fatal编程技术网

Javascript AngularJS ng repeat隐藏重复项(如果不是对象)

Javascript AngularJS ng repeat隐藏重复项(如果不是对象),javascript,arrays,json,angularjs,Javascript,Arrays,Json,Angularjs,这是我在重复中使用的JSON数据: { "2": { "id": 3, "0": { "avatar": "http:\\/\\/localhost\\/pottero\\/wp-content\\/plugins\\/dokan-live-chat\\/assets\\/images\\/avatar.png", "message": "Hello", "id": "2", "class": "" },

这是我在重复中使用的JSON数据:

{
"2": {
    "id": 3,
    "0": {
        "avatar": "http:\\/\\/localhost\\/pottero\\/wp-content\\/plugins\\/dokan-live-chat\\/assets\\/images\\/avatar.png",
        "message": "Hello",
        "id": "2",
        "class": ""
    },
    "1": {
        "avatar": "http:\\/\\/localhost\\/pottero\\/wp-content\\/plugins\\/dokan-live-chat\\/assets\\/images\\/avatar.png",
        "message": "Hello Again",
        "id": "2",
        "class": ""
    }
  }
}
我的html正在重复:

<div ng-repeat="message in $ctrl.messages" class="chat-messages" data-user_id="{{message.id}}" id="chat-messages-{{message.id}}">
  <div ng-repeat="msg in message" class="message {{msg.class}}">
    <img ng-src="{{msg.avatar}}" />
      <div class="bubble">
        '<div ng-bind-html="msg.message | trusted_html"></div>
        <div class="corner"></div>
      </div>
  </div>
</div>
我想做的是,当msg不是像id:3这样的对象时,它不是一个对象,所以我不希望它像ng一样重复。如果msg不是对象,那么不要将它包含在重复循环中?我使用了ng if=typeofmsg!='对象,但它确实隐藏了所有项。请指出,如果重复项不是对象,如何隐藏重复项使用ng容器。不能在同一元素上使用ng repeat和ng if。此外,typeof不是一个函数,而是一个运算符。如果您不想在额外的html上盖章,请使用ng容器,否则您可以在该元素上添加额外的div并添加ng if条件

<div ng-repeat="message in $ctrl.messages" class="chat-messages" data-user_id="{{message.id}}" id="chat-messages-{{message.id}}">
  <div ng-repeat="msg in message" class="message {{msg.class}}">
    <ng-container ng-if="typeof msg !== 'object'"> --> Or you can add here `div` or other html element
      <img ng-src="{{msg.avatar}}" />
        <div class="bubble">
          '<div ng-bind-html="msg.message | trusted_html"></div>
          <div class="corner"></div>
        </div>
    </ng-container>
  </div>
</div>

将每个对象转换为数组:

this.messages = Object.assign([], this.messages);
this.messages.forEach(msg => {
    msg = Object.assign([],msg));
});
当ng repeat指令迭代数组时,它只使用解析为整数的属性

有关详细信息,请参阅


我像这样使用它作为一个指令,但它给我+syntaxt错误?删除反斜杠