在我的公司代码中,我看到:
test.active = [];
test.active.$selectedRow = null;
这是一件有效的事吗。我知道它工作正常,但似乎如果一个变量是一个数组,那么它有一个字段是奇怪的。
当我使用{{test.active}}使用AngularJS查看时,它似乎没有显示$ selectedRow。它只显示数组内容。
答案 0 :(得分:3)
这里有几件事情在发挥作用。其中第一个是$interpolate
,负责将Hello {{ world }}
与$scope.world = "world"
等字符串插入到Hello world
。
$interpolate
对world
的类型没有太大的魔力:如果它是一个字符串,它返回字符串,如果它是一个数字,它会将数字字符串化。如果是其他任何内容,则转到angular.toJson
。您可以在the source。
JSON反过来将数组序列化为@Mosho描述:它从0迭代到length
,如implementation和specification所示:
数组的表示仅包括零之间的元素 和array.length - 包含1。命名属性不包括在内 字串。
当然,您应该能够执行{{ test.active.$selectedRow }}
,并且您还应该能够在JavaScript控制台中检查该值。
答案 1 :(得分:0)
它有效。使用数组原型方法不会迭代这些属性(但是在使用for ... in
时会这样做,但它们毕竟是对象,所以没有任何问题。
使用angular的模板时不显示可能是因为它将对象识别为数组并且仅使用索引从0到length
迭代属性。
答案 2 :(得分:0)
这是有效的语法。如果你这样做:
console.log(test.active);
您将看到$ selectedRow = null,但在迭代时不会出现,因为它不是属性