1

我有这个 HTML 元素:

<tags-input
   ng-model="film.genre"
   display-property="name"
   key-property="id"
   placeholder="Genre"
   replace-spaces-with-dashes="false">
  <auto-complete source="loadGenres($query)"></auto-complete>
</tags-input>

这将创建一个与 Stackoverflow 上类似的标签输入字段。这是正在使用的包http://mbenford.github.io/ngTagsInput/

现在 loadGenres 将返回一个像这样的对象{name: "Genre name", id: 4}。它将被存储到film.genre这样的地方。这是一个问题,因为 API 服务基本上期望film.genre = [4, ...]它必须是一个 id 数组。

我不完全确定如何解决这个问题。我试图在我的newFilm()方法循环中创建一个空数组film.genre并将其添加到该数组中,而不是将其分配给film.genre. 然而,这不起作用,因为当我在这样做之后输出电影时,我仍然得到一个对象数组,其中名称:id 通过某种逻辑。

我在电影.流派中得到了什么:

"genre": [ 0: { "id": 1, "name": "Action" }, 1: { "id": 5, "name": "Comedy" }, ..]  

我需要的:

"genre" : [1, 5]
4

1 回答 1

5

2019 年 3 月更新

使用 ES2015,我们可以更简洁地编写它。

const result = film.genre.map(({id}) => id);

原帖

var result = film.genre.map(function(genre) {
    return genre.id;
});

真的应该是您所需要的,请参阅下面的链接以获取适用于您的流派的工作示例。

https://jsbin.com/hoxucikako/edit?js,console,output

于 2016-05-13T05:08:14.710 回答