没有使用任何异步的异步数组?

时间:2017-04-23 14:36:36

标签: angularjs

它让我发疯了。我有一个非常简单的“问题”,它花了我几个小时,仍然不知道最新情况。

我有一个从父服务继承的子服务(我正在使用ES6)。构造函数采用名为options的1个参数。 optionsthis._defaults分配给options

在我将new Service(options)传递到我的对象(options)之前,我用options填充了一些数据。为了简单起见,我当前的const options = { types: [] } 对象如下所示:

const Types = {
  standard: {
    some: 'data'
  },
  freeroll: {
    some: 'data'
  },
  mainevent: {
    some: 'data'
  },
  qualifier: {
    some: 'data'
  }
};

angular.forEach(Types, (val, key) => {
  options.types[key] = true;
});

现在我在types数组中添加一些东西,比如:

$scope.service = new Service(options)

我将我的服务分配给范围如下:

_defaults.types

并使用控制台输出服务。控制台现在说Array(0)的值为Array(0)。当我单击数组时,将显示正确的值,但范围不知道。

那是怎么回事? mysqldump -h localhost --user=username -p --tab=/var/tmp database_name是不是意味着在console.log()时,数组没有填充任何值,但是后来呢?就像异步函数一样吗?

Here is a plunk of my problem

1 个答案:

答案 0 :(得分:2)

问题是types是一个数组,你将它视为普通的对象。你可以用两种方法解决这个问题。

首先只需将types更改为对象:

const options = {
  types: {}
};

或者,如果您需要数组,请更改您向数组添加项目的方式:

angular.forEach(Types, (val, key) => {
  options.types.push({
      type: key,
      value: val
  });
});

请注意,这只是将对象转换为数组的一种方式,您最终得到的数据结构取决于您。