Javascript Angularjs报道;无法设置未定义的属性";

Javascript Angularjs报道;无法设置未定义的属性";,javascript,angularjs,Javascript,Angularjs,我收到一个错误,上面写着“无法设置未定义的属性” vm.dtr1={};//也许我初始化错了? vm.dtr1.date1={};//也许我初始化错了? for(var x=0;xvm.dtr是一个对象,但您试图通过访问索引将其用作数组。这显然是未定义的 vm.dtr1 = {}; // maybe I'm initializing this wrong ? vm.dtr1.date1 = {}; // maybe I'm initializing this wrong ? for(var x

我收到一个错误,上面写着“无法设置未定义的属性”

vm.dtr1={};//也许我初始化错了?
vm.dtr1.date1={};//也许我初始化错了?

for(var x=0;x
vm.dtr
是一个对象,但您试图通过访问索引将其用作数组。这显然是未定义的

vm.dtr1 = {}; // maybe I'm initializing this wrong ?
vm.dtr1.date1 = {}; // maybe I'm initializing this wrong ?

for(var x=0; x<5; x++){
  vm.dtr1[x].date1 = new Date(days[x]); //getting undefined value
}

您需要将vm.dtr声明为dtx类型的数组。dtr是一个对象,但您试图通过访问索引将其用作数组。显然,这是未定义的

vm.dtr1 = {}; // maybe I'm initializing this wrong ?
vm.dtr1.date1 = {}; // maybe I'm initializing this wrong ?

for(var x=0; x<5; x++){
  vm.dtr1[x].date1 = new Date(days[x]); //getting undefined value
}

您需要将vm.dtr声明为dtx类型的数组dtx

问题在于
x
的可能值不是
vm.dtr1
的正确键

您可能希望在
循环中为…使用

for(var x in vm.dtr1) {
  if (vm.dtr1.hasOwnProperty(x)) {
    vm.dtr1[x] = new Date(days[x]);
  }
}

我仍然不知道
days
是什么。因此,您需要弄清楚。有关在对象上迭代的更多详细信息,请参阅。

问题是
x
的可能值不是
vm.dtr1
的正确键

您可能希望在
循环中为…使用

for(var x in vm.dtr1) {
  if (vm.dtr1.hasOwnProperty(x)) {
    vm.dtr1[x] = new Date(days[x]);
  }
}

我仍然不知道什么是
days
。因此,您需要弄清楚这一点。有关在对象上迭代的更多详细信息,请参阅。

您需要将其更改为数组,然后在分配属性之前必须对其进行初始化

vm.dtr1 = []; // make it an array

for(var x=0; x<5; x++) {
   vm.dtr1[x] = {}; // initialize it first
   vm.dtr1[x].date1 = new Date(days[x]);
}
vm.dtr1=[];//将其设置为数组

对于(var x=0;x您需要将其更改为数组,然后在分配属性之前必须对其进行初始化

vm.dtr1 = []; // make it an array

for(var x=0; x<5; x++) {
   vm.dtr1[x] = {}; // initialize it first
   vm.dtr1[x].date1 = new Date(days[x]);
}
vm.dtr1=[];//将其设置为数组

对于(var x=0;x尝试以下更改将很快奏效

vm.dtr1 = []; // change here
//vm.dtr1.date1 = {}; // remove this

for(var x=0; x<5; x++){
  vm.dtr1[x] ={}
  vm.dtr1[x].date1 = new Date(days[x]); //
}
vm.dtr1=[];//在此处更改
//vm.dtr1.date1={};//删除此

对于(var x=0;x尝试以下更改将很快奏效

vm.dtr1 = []; // change here
//vm.dtr1.date1 = {}; // remove this

for(var x=0; x<5; x++){
  vm.dtr1[x] ={}
  vm.dtr1[x].date1 = new Date(days[x]); //
}
vm.dtr1=[];//在此处更改
//vm.dtr1.date1={};//删除此

对于(var x=0;x我认为您可能需要这样做

var vm = {}; vm.dtr1 = []; 
var day = ['7/7/2012','7/7/2012','7/7/2012','7/7/2012','7/7/2012']
  vm.dtr1[x] = {};
  vm.dtr1[x].date1 = new Date(days[x]);
}

仍然不知道天数是多少,我所做的是作为日期构造函数的预期输入,我想您可能需要这样做

var vm = {}; vm.dtr1 = []; 
var day = ['7/7/2012','7/7/2012','7/7/2012','7/7/2012','7/7/2012']
  vm.dtr1[x] = {};
  vm.dtr1[x].date1 = new Date(days[x]);
}

仍然不知道天数是多少,我所做的是日期构造函数的预期输入

我试图更改
vm.dtr1=[]
,但它仍然抛出错误。只是这样做不起作用,你需要让dtxI类型的对象尝试更改
vm.dtr1=[]
但它仍然会抛出错误。只是这样做不起作用,你需要DTX类型的对象非常感谢你。它现在起作用了我用了你的第二个答案第二个更好。在第一个我只想显示初始化谢谢。它起作用了我用了你的第二个答案第二个更好。在第一个我只是要显示初始化吗