我试过在这里查看其他$ rootScope:infdig问题,找不到真正向我解释的问题,或者我理解的问题.与AngularJs文档相同.我希望有人能帮帮忙.
我在$ scope上创建了一个函数,它接受一个参数并调用api GET请求并返回一个带有just和"id"和"name"的json对象.然后,此函数将对象的名称返回给调用它的指令.
该函数从指令调用,但一旦它执行,它就会陷入每秒一百个"rootScope:infdig"的错误中.该指令也从不呈现返回的"名称"的文本.我知道http调用有效,因为我在控制台中记录了"名称".
错误屏幕
这是我的控制器:
owlyfm.controller('landingPageController', [ "$scope", "$log", "$http", "$location", "apiUrlsService", function ($scope, $log, $http, $location, apiUrlsService) { $http.get("https://api.backand.com:443/1/objects/Albums?pageSize=3&pageNumber=1&deep=true&relatedObjects=true") .success( function(result){ $scope.featuredAlbums = result.data; //$log.info($scope.featuredAlbums); }) .error( function(data, status){ $log.error(data); }); $scope.getAlbumArtist = function(artistId){ $http.get("https://api.backand.com:443/1/objects/Artists/" + artistId) .success(function(result){ var artistsName = result.name; $log.info(artistsName); return artistsName; }); } }]);
这是我创建指令的地方:
owlyfm.directive("featuredAlbum", function(){ return{ restrict: 'E', templateUrl: 'directives/featuredAlbum.html', scope: { albumObject: "=", getAlbumArtistFunction: "&" } } });
这是我在视图中调用指令的地方
这是指令本身:
{{ albumObject.name }}
{{ getAlbumArtistFunction( { album: albumObject.Artists } ) }}
{{ albumObject.releaseDate }}
总结一下,我正在做的是调用api获取一个专辑对象,(我正在使用"Backand"BTW)一旦我得到这个专辑对象,我用我收到的数据渲染和
标签.这工作正常.
专辑对象具有ID,名称,日期,imgUrl和"艺术家"(这只是艺术家的ID).然后我使用这个"艺术家"id进行另一次调用以获取与之关联的实际Artist对象.这就是出现问题的地方.
这是艺术家对象的http调用导致错误循环.即使我可以在日志中看到它正在获取艺术家的json对象,但它不会将其发送到指令.
我已经读过使用ng-repeat和指令中的函数存在问题.但是,我并不完全理解为什么以及它如何适用于此,我也不知道如何改变它来做我想要实现的目标.这里的所有其他问题都在我头上.
如果有人能帮助我,我将非常感激.