为什么{{}}没有显示分配给变量的字段,如果有一个分配给它的数组?

时间:2014-07-01 07:04:17

标签: angularjs

在我的公司代码中,我看到:

test.active = [];
test.active.$selectedRow = null;

这是一件有效的事吗。我知道它工作正常,但似乎如果一个变量是一个数组,那么它有一个字段是奇怪的。

当我使用{{test.active}}使用AngularJS查看时,它似乎没有显示$ selectedRow。它只显示数组内容。

3 个答案:

答案 0 :(得分:3)

这里有几件事情在发挥作用。其中第一个是$interpolate,负责将Hello {{ world }}$scope.world = "world"等字符串插入到Hello world

$interpolateworld的类型没有太大的魔力:如果它是一个字符串,它返回字符串,如果它是一个数字,它会将数字字符串化。如果是其他任何内容,则转到angular.toJson。您可以在the source

中找到

JSON反过来将数组序列化为@Mosho描述:它从0迭代到length,如implementationspecification所示:

  

数组的表示仅包括零之间的元素   和array.length - 包含1。命名属性不包括在内   字串。

当然,您应该能够执行{{ test.active.$selectedRow }},并且您还应该能够在JavaScript控制台中检查该值。

答案 1 :(得分:0)

它有效。使用数组原型方法不会迭代这些属性(但是在使用for ... in时会这样做,但它们毕竟是对象,所以没有任何问题。

使用angular的模板时不显示可能是因为它将对象识别为数组并且仅使用索引从0到length迭代属性。

答案 2 :(得分:0)

这是有效的语法。如果你这样做:

console.log(test.active);

您将看到$ selectedRow = null,但在迭代时不会出现,因为它不是属性