Javascript 在实例化控制器之前,未解析JSON对象

Javascript 在实例化控制器之前,未解析JSON对象,javascript,angularjs,arrays,json,ionic-framework,Javascript,Angularjs,Arrays,Json,Ionic Framework,我使用Ionic创建了一个应用程序,在控制器中,我得到了一个从app.js解析的对象。此对象具有多个属性,包括如下所示的数组: { "objectId":"id", "objectName":"name", "anArray":[{ "id":"id1", "name":"name1", "description":"Medium Rare", "photographUrl":"/image1" },

我使用Ionic创建了一个应用程序,在控制器中,我得到了一个从app.js解析的对象。此对象具有多个属性,包括如下所示的数组:

{
    "objectId":"id",
    "objectName":"name",
    "anArray":[{
        "id":"id1",
        "name":"name1",
        "description":"Medium Rare",
        "photographUrl":"/image1"
    }, {
        "id":"id2",
        "name":"name2",
        "description":"Baked Beans on Scrumptious Dark Rye Bread",
        "photographUrl":"/image2"
    }],
    "emptyArray":[]
}
但是,问题是,我可以在object.anArray中使用:(key,value)遍历html中数组中的每个项,但在控制器中,我尝试在for循环中遍历数组
for(var i=0;i<$scope.theObject.anArray.length;i++){…}

但是,我得到一个错误:

TypeError:无法读取未定义的属性“length”

有人能帮我弄清楚为什么我不能在控制器中访问这个数组,但我可以在html中访问。事实上,我无法访问控制器中对象的任何属性,似乎控制器是在app.js中使用“resolve”解析对象之前实例化的,然而,我的印象是,这不应该发生,数据应该在控制器实例化之前解析

在控制器中,我使用以下内容:

$scope.theObject = theObject;

谢谢

因为您没有
JSON
,所以您得到了下面的错误信息。您有一个数组:
[]

试试这个:

var myApp=angular.module('myApp',[]);
myApp.controller('MyCtrl',函数($scope){
变量对象=[{
“objectId”:“id”,
“objectName”:“name”,
“混乱”:[{
“id”:“id1”,
“名称”:“名称1”,
“说明”:“中稀”,
“照片”:“/image1”
}, {
“id”:“id2”,
“名称”:“名称2”,
“描述”:“美味的黑麦面包上的烤豆”,
“照片”:“/image2”
}],
“空数组”:[]
}];
$scope.theObject=theObject;
var arr=$scope.theObject[0]。数组;
对于(变量i=0;i

好的,我已经解决了这个问题。Resolve在实例化控制器之前返回对象的承诺。但是,在将web调用中的对象数据放入promise对象之前,将实例化控制器。因此,解决方案是使用这条线路在控制器内部进行web调用

factory.theObject().get().$promise.then(function (response{
   $scope.theObject = response;
}

您可以执行console.log($scope.theObject)吗?只返回[object object],我们可以获得关于$scope.theObject的更多信息吗?它来自哪里?console.log(JSON.stringify($scope.theObject))。。检查对象的结构。查看键是否存在。JSON.stringify()返回{}。该键确实存在,并使用ng repeat=“(键,值)在HTML中工作在Object.anArray中,对象来自web请求,即对$resource的查询。从网络活动中可以看出,返回的对象是正确的。很抱歉,这不起作用,我遇到了以下错误:TypeError:无法将未定义或null转换为对象。传递的对象不是数组,而是一个将数组作为正确数组的对象正在传递的对象来自Rest控制器,因此我无法更改它