当您有这样的 ng-model
声明时,正确的行为应该是什么?
data-ng-model="elements[0]"
它的工作方式是,如果 elements
已在范围中定义为数组,则它会按照我预期的方式工作,分配数组的第一个元素。
但是如果 elements
没有声明,它会分配这个值:
elements = {0:'anyvalue'}
(如果我写了data-ng-model="elements['0']"
,这就有意义了)
在这种情况下:
elements[0]='anyvalue';
elements['0']='anyvalue';
并且我无法使用“点”表示法(elements.0
或 elements.'0'
)读取属性的值。
所以它看起来是正确的,但有点奇怪。
这种行为是否正确,或者在未定义作用域变量时应该实例化一个数组?
最佳答案
数组只是一种特殊类型的对象。如果您在调试器中查看数组,所有值都会列为带有数字键的属性,就像您显示的那样。如果您不将对象初始化为数组,它仍然会以相同的方式访问该对象,这仅意味着您现在拥有一个带有数字键的对象,并且没有任何来自 Array 原型(prototype)的有用函数。
关于javascript - 奇怪的 ng-model 行为(ng-model 映射到数组元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660680/