Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular/Controller加载json文件失败,出现一个我无法理解的异常_Javascript_Angularjs_Angular Promise_Angularjs Http_Angularjs Rootscope - Fatal编程技术网

Javascript Angular/Controller加载json文件失败,出现一个我无法理解的异常

Javascript Angular/Controller加载json文件失败,出现一个我无法理解的异常,javascript,angularjs,angular-promise,angularjs-http,angularjs-rootscope,Javascript,Angularjs,Angular Promise,Angularjs Http,Angularjs Rootscope,对不起,也许是个愚蠢的问题,但我还是个有棱角的新手 守则: --编辑#2---------------编辑 --编辑结束#2---------------结束 错误: Error: [$rootScope:infdig] http://errors.angularjs.org/1.5.5/$rootScope/infdig?p0=10&p1=%5B%5D at angular.js:38 at n.$digest (angular.js:17111) at n.$

对不起,也许是个愚蠢的问题,但我还是个有棱角的新手

守则:

--编辑#2---------------编辑

--编辑结束#2---------------结束

错误:

Error: [$rootScope:infdig] http://errors.angularjs.org/1.5.5/$rootScope/infdig?p0=10&p1=%5B%5D
    at angular.js:38
    at n.$digest (angular.js:17111)
    at n.$apply (angular.js:17337)
    at angular.js:1749
    at Object.invoke (angular.js:4665)
    at c (angular.js:1747)
    at yc (angular.js:1767)
    at ee (angular.js:1652)
    at angular.js:30863
    at HTMLDocument.b (angular.js:3166)

angular.js:38Uncaught Error: [$rootScope:infdig] http://errors.angularjs.org/1.5.5/$rootScope/infdig?p0=10&p1=%5B%5D
    at angular.js:38
    at n.$digest (angular.js:17111)
    at n.$apply (angular.js:17337)
    at angular.js:1749
    at Object.invoke (angular.js:4665)
    at c (angular.js:1747)
    at yc (angular.js:1767)
    at ee (angular.js:1652)
    at angular.js:30863
    at HTMLDocument.b (angular.js:3166)
异常被抛出两次。我无法想象这意味着什么,怎么了? 这句话似乎是对问题的诅咒:

return $http.get('data/objects.json').success(function(response) {
控制器通过以下方式启动:

EspanioApp.controller('DataController', ['$http', function ($http) {...
你有什么提示我如何解决这个问题吗

cu n00n这是错误:

(无限
$digest
循环) 当应用程序的模型变得不稳定,并且每个
$digest
周期触发状态更改和随后的
$digest
周期时,就会发生此错误。Angular检测到这种情况,并防止无限循环导致浏览器无响应

可能
setRawObjects
的绑定方式不太合适

另外,我也不确定如何处理
setRawObjects
返回的内容:我会验证它返回的内容,可能是一个,应该异步处理,因此直接html绑定无法正确处理它

例如,如果在控制台上打印返回,您会发现
对象
未定义的
,而
响应
不是,这意味着返回在成功回调之前执行:

setRawObjects = function(){
    return $http.get('data/objects.json').success(function(response) {
        console.log(response);
        objects = response.objects;
        loaded = true;
    });
}

var getObjects = function () {
    console.log(loaded);
    if(!loaded){
        setRawObjects();
    }
    console.log(objects);
    return objects;
};
因此,与其绑定函数,不如直接绑定对象:

MyApp.controller('DataController', ['$http', function ($http) {
    var self = this;
    self.objects = [];

    $http.get('data/objects.json').success(function (response) {
        console.log(response);
        self.objects = response;
    });
}]);
Angular将监视其已更新,并将更新视图。

这是错误:

(无限
$digest
循环) 当应用程序的模型变得不稳定,并且每个
$digest
周期触发状态更改和随后的
$digest
周期时,就会发生此错误。Angular检测到这种情况,并防止无限循环导致浏览器无响应

可能
setRawObjects
的绑定方式不太合适

另外,我也不确定如何处理
setRawObjects
返回的内容:我会验证它返回的内容,可能是一个,应该异步处理,因此直接html绑定无法正确处理它

例如,如果在控制台上打印返回,您会发现
对象
未定义的
,而
响应
不是,这意味着返回在成功回调之前执行:

setRawObjects = function(){
    return $http.get('data/objects.json').success(function(response) {
        console.log(response);
        objects = response.objects;
        loaded = true;
    });
}

var getObjects = function () {
    console.log(loaded);
    if(!loaded){
        setRawObjects();
    }
    console.log(objects);
    return objects;
};
因此,与其绑定函数,不如直接绑定对象:

MyApp.controller('DataController', ['$http', function ($http) {
    var self = this;
    self.objects = [];

    $http.get('data/objects.json').success(function (response) {
        console.log(response);
        self.objects = response;
    });
}]);

Angular将看到它被更新,并将更新视图。

无限$digest cycle…无限$digest cycle…然后取而代之。成功也不起作用。。。。也许编辑1是个问题。希望在加载页面时加载一次json文件。@n00n我已更新了答案。我认为其中一个主要问题是,您希望同步返回异步请求的响应。。。但是返回是失败的,因为我使用了一个错误的代码示例。如果没有回报,我也会得到同样的行为deleted@n00n我添加了一个可能的解决方案..然后代替.成功也不起作用。。。。也许编辑1是个问题。希望在加载页面时加载一次json文件。@n00n我已更新了答案。我认为其中一个主要问题是,您希望同步返回异步请求的响应。。。但是返回是失败的,因为我使用了一个错误的代码示例。如果没有回报,我也会得到同样的行为deleted@n00n我添加了一个可能的解决方案。