- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我曾尝试在这里查看其他 $rootScope:infdig 问题,但找不到真正向我解释清楚或我理解的问题。与 AngularJs 文档相同。我希望有人能提供帮助。
我在 $scope 上创建了一个函数,它接受一个参数并调用一个 api GET 请求并返回一个只有“id”和“name”的 json 对象。然后,此函数将对象的名称返回给调用它的指令。
该函数从指令中调用,但一旦执行,它就会陷入每秒一百个这样的“rootScope:infdig”错误中。该指令也从不呈现返回的“名称”的文本。我知道 http 调用有效,因为之后我在控制台中记录了“名称”。
这是我的 Controller :
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: "&"
}
}
});
这里是我在 View 中调用指令的地方
<div class="row fluid-container" >
<featured-album ng-repeat="featuredAlbum in featuredAlbums" album-object="featuredAlbum" get-album-artist-function="getAlbumArtist(album)" class="col-md-4" ></featured-album>
</div>
这是指令本身:
<div class="featuedAlbum">
<div>
<img class="img-responsive" ng-src=" {{albumObject.albumArtUrl}} "/>
</div>
<h4>{{ albumObject.name }}</h4>
<h5>{{ getAlbumArtistFunction( { album: albumObject.Artists } ) }}</h5>
<h6>{{ albumObject.releaseDate }}</h6>
</div>
总而言之,我正在做的是调用 api 来获取专辑对象,(顺便说一句,我正在使用“Backand”)一旦我得到这个专辑对象,我就会渲染 <img>
和 <h>
带有我收到的数据的标签。一切正常。
专辑对象具有 ID、名称、日期、imgUrl 和“艺术家”(这只是艺术家的 ID)。然后我使用这个“艺术家”ID 进行另一个调用以获取与其关联的实际艺术家对象。这就是问题所在。
导致错误循环的是对艺术家对象的 http 调用。尽管我可以在日志中看到它正在获取艺术家的 json 对象,但它不会将其发送到指令。
我读到过将 ng-repeat 与指令中的函数一起使用时会出现问题。但是,我不太完全理解为什么以及如何将它应用在这里,也不知道我将如何更改它来实现我想要实现的目标。这里的所有其他问题都超出了我的理解范围。
如果有人能帮助我,我将不胜感激。
最佳答案
正如评论中所说,调用一个将从服务器内部 View 中获取数据的函数不是一个好主意,因为它会调用多次,而您只需要调用一次。
您可以添加将在“featuredAlbum”构造函数中设置的“artistName”属性。
owlyfm.controller('featuredAlbumController', [ "$scope","$http",function ($scope, $http) {
$http.get("<a href="https://api.backand.com:443/1/objects/Artists/" rel="noreferrer noopener nofollow">https://api.backand.com:443/1/objects/Artists/</a>" + $scope.artistId)
.success(function(result){
$scope.artistName = result.name;
});
}]);
因此,$http 只会在 Controller 第一次运行时被调用一次。
关于javascript - 调用 $scope 函数的自定义指令导致 $rootScope :infdig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714129/
这是一个常见问题: 5 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [] 文档 (
我快要把头撞到墙上了。我以为我了解 Angular 的工作原理(也了解过滤器)。但我就是找不到我的过滤器的问题。它会导致 infdig。我什至不更改过滤器中的源数组。 (function () {
我正在尝试使用 angularjs 1.2.15 构建分页指令: 这是我的观点: {{user.id}} / {{user.firstname}} {{user.lastname}
我正在为我的数据制作饼图。我正在使用Angular Chart (随后是 charts.js )。 我的数据如下所示( vm 是 Controller ): vm.persons = [ {
我有一个单页应用程序,我已经与几位同事一起开发了一年多。这是一个 Angular 应用程序,使用 Angular-ui-router 在页面之间移动。有时,第一次访问设置页面时,会抛出以下异常: Er
我正在使用 AngularJS(使用 Aria、Animate、Material、Messages、Sanitize 和 Route)处理一个页面,一切正常,但我遇到了一些问题。 Angular 喜欢
这是我的代码片段 My Data {{tg.count}} Controll
我正在学习 AngularJs,但我无法让它工作。我读过有关摘要循环的内容,但我不清楚。很明显,这段代码失败了,因为进入了无限循环,但我不知道如何修复它。有人可以帮助我吗? Learning
我是 Angular 的新手,在这种情况下我必须将对象传递到 ng-repeat 中元素的属性中。如果我不使用 ajax 获取数据而只返回一个普通对象,则返回新对象时代码工作正常,但是,当我这样做时,
我正在对ng-repeat中的数组进行过滤。 div.row(ng-repeat="log in logs | prepare_log | orderBy: 'log.created'") 在prep
用户登录到我们的应用程序后,用户凭据就会存储到本地存储中。如果用户在已经登录的情况下路由到登录状态,则会在控制台中显示以下错误: Uncaught Error: [$rootScope:infdig]
我正在尝试获取每场比赛的所有 field : HTML 看起来像这样: {{g.gameName}} Controller 是: $scope.games = {}; $scope.
我已经放弃尝试解决这个问题,并在 Google 上寻求帮助。根据我收集的信息,AngularJs 对变量和函数有某种魔力。我读过,尽管你通常使用 Javascript 进行编程,但 AngularJS
我曾尝试在这里查看其他 $rootScope:infdig 问题,但找不到真正向我解释清楚或我理解的问题。与 AngularJs 文档相同。我希望有人能提供帮助。 我在 $scope 上创建了一个函数
如果我使用带有常规 ng-bind 的函数,一切似乎都很好。但是如果我使用 ng-bind-html ,我收到无限摘要错误。 === View === 1. 2. === Controller =
这是我的代码: something $scope.func = function(){ return [{"property" : "value1"},{"property": "value2"}
我对 AngularJS 比较陌生,我认为由于通过 ng-model 绑定(bind)文本区域,我的代码中存在 infdig 错误,但我不确定如何修复它。 文本区域具有我当前期望的值。阅读有关该主题的
我了解了无限摘要循环的基本概念以及它是如何发生的,但我遇到了问题。这是一个演示我的代码和问题的 fiddle : http://jsfiddle.net/eS5e5/1/ 在 jsfiddle 控制台
我是 AngularJS 的新手,遇到了一个问题。 我有一个通过 $http GET 请求检索到的发票的 JSON 数组,该请求在此处循环: {{ invoice[data]["TxnD
在 ios8 中工作的 Angular 应用程序中的路由在 ios9 中会产生 [$rootScope:infdig] 错误。我已经尝试了 ngRoute 和 ui.router 但结果是相同的。 E
我是一名优秀的程序员,十分优秀!