【发布时间】:2017-12-12 00:20:34
【问题描述】:
我已经编写了一个自定义的角度指令,如下所示:
dirs.directive('sectionInfo', function(){
return {
restrict: 'E',
templateUrl: 'partials/section-home.html',
transclude: true,
controller: function($scope, $routeParams){
var section = this;
section.sectionItem = [];
client.entries({"some params"},
function(err, entries){
if (err) { console.log(err); return; }
$scope.$apply(function(){
section.sectionItem = entries;
});
}
);
},
controllerAs: 'sectionCtrl'
}
});
然后显示在一个单独的部分页面中,如下所示:
<section-info></section-info>
<ul class="list-group">
<li class="list-group-item" ng-repeat="entry in entriesCtrl.index_items">
<a href="#/entries/{{entry.sys.id}}">
<h4>{{entry.fields.title}} <small>{{entry.fields.author}}</small></h4>
</a>
</li>
</ul>
部分模板代码很简单:
{{sectionCtrl.sectionItem}}
当我加载此页面并保留 $scope$apply 调用时,我收到一个错误:
错误:错误:interr 插值误差 无法插值:{{sectionCtrl.sectionItem}} TypeError:将循环结构转换为 JSON
当我删除 $scope.$apply 调用时,它消失了。知道是什么导致了 $scope.$apply 调用中的循环引用吗?
编辑:条目内容和错误消息的控制台日志。
【问题讨论】:
-
你能显示
entries的值吗?这很可能是导致您的问题的原因,在这种情况下,$apply所做的只是告诉模板它必须显示新值(entries) -
完成 - 在 $scope.$apply 之前调用 console.log(entries) :-)
-
我的意思是,显示它的实际内容 - 问题是条目不能表示为 JSON,因为它的某些部分引用自身,使其循环。
标签: javascript json angularjs