为什么我在带有数组的对象上使用它时会出现$ parse错误?

时间:2015-08-01 20:15:48

标签: javascript angularjs

我有两个json文件。我这样得到他们:

var fr, en;
$.getJSON('fr.json', function(data) {
    fr = data;
}).complete(function() {
    ...
});

$.getJSON('en.json', function(data) {
    en = data;
}).complete(function() {
    ...
});

此文件是区域设置文件。我想测试它们。我想通过属性名比较对象fr和en,因此当locale文件中缺少某些内容时,单元测试将显示。

要获取EN语言环境中缺少的属性,我将使用此算法:

  1. 获取所有对象路径,例如FR语言环境中的a.b.c,a.b.e,a.d.x等
  2. 然后我使用$parse(*path*)(fr);,如果它返回了某些内容 - > EN语言环境 具有与FR locale相同的属性。
  3. 所以我的问题。我在文件fr中有这样的字符串。 "一些":{"数字":["一个","两个","三个"] ...... } 第一步,我有这样的属性路径:

    some.numbers.0
    some.numbers.1
    some.numbers.2
    

    当我尝试在EN语言环境中解析这些路径时,我收到了这个错误:

    Error: [$parse:syntax] Syntax Error: Token '.0' is an unexpected token at column 15 of the expression [addForm.messages.numbers.0] starting at [.0].
    http://errors.angularjs.org/1.4.3/$parse/syntax?p0=.0&p1=is%20an%20unexpected%20token&p2=25&p3=some.numbers.0&p4=.0
    

    如何在包含数组的对象上进行$解析?或者还有其他方法可以做我需要的吗?

1 个答案:

答案 0 :(得分:0)

正如@charlietfl在他对这个问题的评论中提到的那样:

  

对象没有这些属性,数字是一个数组。需要使用   正确的javascript对象/数组表示法

所以,我需要使用

some.numbers[0]
some.numbers[1]
etc 

而不是

some.numbers.0