它使我发疯。我有一个非常简单的"问题",花了我几个小时,但仍然不知道发生了什么。
我有一个从父母服务继承的儿童服务(我正在使用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
});
});
请注意,这只是将对象变成数组的一种方法,最终的数据结构取决于您。