javascript - 奇怪的 ng-model 行为(ng-model 映射到数组元素)

标签 javascript arrays angularjs

当您有这样的 ng-model 声明时,正确的行为应该是什么?

data-ng-model="elements[0]"

它的工作方式是,如果 elements 已在范围中定义为数组,则它会按照我预期的方式工作,分配数组的第一个元素。

但是如果 elements 没有声明,它会分配这个值:

elements = {0:'anyvalue'}

(如果我写了data-ng-model="elements['0']",这就有意义了)

在这种情况下:

elements[0]='anyvalue';
elements['0']='anyvalue';

并且我无法使用“点”表示法(elements.0elements.'0')读取属性的值。

所以它看起来是正确的,但有点奇怪。

这种行为是否正确,或者在未定义作用域变量时应该实例化一个数组?

最佳答案

数组只是一种特殊类型的对象。如果您在调试器中查看数组,所有值都会列为带有数字键的属性,就像您显示的那样。如果您不将对象初始化为数组,它仍然会以相同的方式访问该对象,这仅意味着您现在拥有一个带有数字键的对象,并且没有任何来自 Array 原型(prototype)的有用函数。

关于javascript - 奇怪的 ng-model 行为(ng-model 映射到数组元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660680/

相关文章:

javascript - HTML 表格中的 AngularJS

javascript - 如何从 JS 字符串创建对象属性

c - 为什么我不能从数组中读取数据?

python - `--` 值在 numpy 数组中意味着什么?

javascript - Ionic - 向同一组中的用户推送通知

javascript - AngularJS 中的数组属性转换

Javascript 增加一个值

javascript - 当页面上出现类时触发 <script src =""

javascript - 性能差异(map()、forEach()、for())

javascript - 在 Angular JS 1.6 中处理 JSONP 响应