AngularJS中的一些误解

AngularJS中的一些误解,angularjs,Angularjs,在我的控制器中,我有以下定义: var self = this; this.game= gameArchive; 我认为这一行: <input type="checkbox" checklist-model="builderStep2.game.ModelItems" checklist-value="model.Id"> {{model.Name}} 当用户按下复选按钮时,将创建数组,并将值添加到game.ModelItems,但当我尝试通过此行以编程方式填充数

在我的控制器中,我有以下定义:

var self = this;
this.game= gameArchive;
我认为这一行:

<input type="checkbox"
    checklist-model="builderStep2.game.ModelItems"
    checklist-value="model.Id"> {{model.Name}}
当用户按下复选按钮时,将创建数组,并将值添加到
game.ModelItems
,但当我尝试通过此行以编程方式填充数组时:

self.game.ModelItems.push(someID);
似乎数组未创建,我得到以下错误:

TypeError:无法读取null的属性“push”

知道为什么会这样吗?

push()
属于
Array.prototype
。如果
game.ModelItems
不是数组,
push()
将不起作用

我不确定
gameArchive
正在做什么,但您可以在控制器
this.game.ModelItems=[]中尝试push()
会起作用。

push()
属于
数组。原型
。如果
game.ModelItems
不是数组,
push()
将不起作用

我不确定
gameArchive
正在做什么,但您可以在控制器
this.game.ModelItems=[]中尝试push()
会起作用。

push()
属于
数组。原型
。如果
game.ModelItems
不是数组,
push()
将不起作用

我不确定
gameArchive
正在做什么,但您可以在控制器
this.game.ModelItems=[]中尝试push()
会起作用。

push()
属于
数组。原型
。如果
game.ModelItems
不是数组,
push()
将不起作用


我不确定
gameArchive
正在做什么,但您可以在控制器
this.game.ModelItems=[]中尝试push()
会起作用。

还有可能ModelItems甚至没有声明。。但是,是的,我同意您的解决方案会有所帮助。简单地声明“this.game.ModelItems;”不会起任何作用。它需要定义为一个带有“=[];”的数组或等效的替代项。this.game.ModelItems已声明但未声明为数组。但当我使用此方法时,它正在工作?是的,您需要将其初始化为空数组,如ModelItems=new array()或ModelItems=[]。您的ModelItems只是null,而您的javascript正在抛出一个错误,因为它无法访问null值的属性。在您的情况下,“推”是属性。如果您将ModelItems从null切换到数组,那么它将工作。也可能ModelItems甚至没有声明。。但是,是的,我同意您的解决方案会有所帮助。简单地声明“this.game.ModelItems;”不会起任何作用。它需要定义为一个带有“=[];”的数组或等效的替代项。this.game.ModelItems已声明但未声明为数组。但当我使用此方法时,它正在工作?是的,您需要将其初始化为空数组,如ModelItems=new array()或ModelItems=[]。您的ModelItems只是null,而您的javascript正在抛出一个错误,因为它无法访问null值的属性。在您的情况下,“推”是属性。如果您将ModelItems从null切换到数组,那么它将工作。也可能ModelItems甚至没有声明。。但是,是的,我同意您的解决方案会有所帮助。简单地声明“this.game.ModelItems;”不会起任何作用。它需要定义为一个带有“=[];”的数组或等效的替代项。this.game.ModelItems已声明但未声明为数组。但当我使用此方法时,它正在工作?是的,您需要将其初始化为空数组,如ModelItems=new array()或ModelItems=[]。您的ModelItems只是null,而您的javascript正在抛出一个错误,因为它无法访问null值的属性。在您的情况下,“推”是属性。如果您将ModelItems从null切换到数组,那么它将工作。也可能ModelItems甚至没有声明。。但是,是的,我同意您的解决方案会有所帮助。简单地声明“this.game.ModelItems;”不会起任何作用。它需要定义为一个带有“=[];”的数组或等效的替代项。this.game.ModelItems已声明但未声明为数组。但当我使用此方法时,它正在工作?是的,您需要将其初始化为空数组,如ModelItems=new array()或ModelItems=[]。您的ModelItems只是null,而您的javascript正在抛出一个错误,因为它无法访问null值的属性。在您的情况下,“推”是属性。如果您将ModelItems从null切换到数组,那么它将工作。
self.game.ModelItems.push(someID);