异步数组无需使用任何异步



它使我发疯。我有一个非常简单的"问题",花了我几个小时,但仍然不知道发生了什么。

我有一个从父母服务继承的儿童服务(我正在使用ES6(。构造函数采用一个称为options的1个参数。options将分配给this._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;
});

我将我的服务分配给这样的范围:

$scope.service = new Service(options)

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

那怎么样? Array(0)并不意味着在Console.log((时,数组没有填充任何值,而是以后?就像异步函数一样吗?

这是我问题的一个。

问题是types是一个数组,您将其视为普通对象。您可以解决这两种方法之一。

首先将types更改为对象:

const options = {
  types: {}
};

或,如果您需要一个数组,请更改将项目添加到数组的方式:

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

请注意,这只是将对象变成数组的一种方法,最终的数据结构取决于您。

相关内容

最新更新