Javascript 带ng滚动和ng重复的AngularJS
将angular ui与angular一起使用。标记包括一个Javascript 带ng滚动和ng重复的AngularJS,javascript,angularjs,json,angular-ui,ui-scroll,Javascript,Angularjs,Json,Angular Ui,Ui Scroll,将angular ui与angular一起使用。标记包括一个ng scroll元素,我使用它处理从服务检索到的数据。我想创建项目行,以便在ng滚动条中重复。这在原则上是可行的(),但AngularJS说我的JSON编码有问题,需要帮助找出我做错了什么 因此,需要明确的是,下面的标记和JSON在plunker中有效,但在应用程序中无效。plunker和下面的JSON来自调试器响应体 标记: <div class="row" > <div class="col-md-12" &
ng scroll
元素,我使用它处理从服务检索到的数据。我想创建项目行,以便在ng滚动条中重复。这在原则上是可行的(),但AngularJS说我的JSON编码有问题,需要帮助找出我做错了什么
因此,需要明确的是,下面的标记和JSON在plunker中有效,但在应用程序中无效。plunker和下面的JSON来自调试器响应体
标记:
<div class="row" >
<div class="col-md-12" >
<div class="video_thumb" ng-scroll='video_list in VideoIndexScrollerSource' buffer-size='10' padding="2" >
<div class="row" ng-repeat="video in video_list">
<p>
<a ng-href="/guides/{{video._id}}" target="_self">
<img ng-src="{{video.thumb}}">
</a>
</p>
</div>
</div>
</div>
</div>
不确定为什么这不起作用,ng滚动应该迭代行,将一个数组放入video_列表,ng repeat应该从行中抓取每个对象并获取值
错误:
<div class="row" >
<div class="col-md-12" >
<div class="video_thumb" ng-scroll='video_list in VideoIndexScrollerSource' buffer-size='10' padding="2" >
<div class="row" ng-repeat="video in video_list">
<p>
<a ng-href="/guides/{{video._id}}" target="_self">
<img ng-src="{{video.thumb}}">
</a>
</p>
</div>
</div>
</div>
</div>
这是我在返回上述JSON时得到的AngularJS错误:
TypeError: Object #<Resource> has no method 'push'
at copy (http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:827:33)
at new Resource (http://localhost:3000/assets/angular-1.2.0/angular-resource.js?body=1:402:21)
at http://localhost:3000/assets/angular-1.2.0/angular-resource.js?body=1:483:52
at Array.forEach (native)
at forEach (http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:301:21)
at angular.module.factory.Resource.(anonymous function).$http.then.value.$resolved (http://localhost:3000/assets/angular-1.2.0/angular-resource.js?body=1:482:37)
at deferred.promise.then.wrappedCallback (http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:10598:99)
at deferred.promise.then.wrappedCallback (http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:10598:99)
at http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:10684:40
at Scope.$get.Scope.$eval (http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:11577:44) angular.js?body=1:9102
(anonymous function) angular.js?body=1:9102
$get angular.js?body=1:6707
deferred.promise.then.wrappedCallback angular.js?body=1:10601
deferred.promise.then.wrappedCallback angular.js?body=1:10598
(anonymous function) angular.js?body=1:10684
$get.Scope.$eval angular.js?body=1:11577
$get.Scope.$digest angular.js?body=1:11422
$get.Scope.$apply angular.js?body=1:11683
done angular.js?body=1:7700
completeRequest angular.js?body=1:7866
xhr.onreadystatechange angular.js?body=1:7822
TypeError:对象#没有方法“push”
抄袭(http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:827:33)
新资源(http://localhost:3000/assets/angular-1.2.0/angular resource.js?body=1:402:21)
在http://localhost:3000/assets/angular-1.2.0/angular resource.js?body=1:483:52
at Array.forEach(本机)
在弗雷赫(http://localhost:3000/assets/angular-1.2.0/angular.js?主体=1:301:21)
位于angular.module.factory.Resource.(匿名函数)。$http.then.value.$resolved(http://localhost:3000/assets/angular-1.2.0/angular resource.js?body=1:482:37)
在deferred.promise.then.wrappedCallback(http://localhost:3000/assets/angular-1.2.0/angular.js?主体=1:10598:99)
在deferred.promise.then.wrappedCallback(http://localhost:3000/assets/angular-1.2.0/angular.js?主体=1:10598:99)
在http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:10684:40
范围为$get.Scope.$eval(http://localhost:3000/assets/angular-1.2.0/angular.js?body=1:11577:44)angular.js?body=1:9102
(匿名函数)angular.js?body=1:9102
$get angular.js?body=1:6707
deferred.promise.then.wrappedCallback angular.js?body=1:10601
deferred.promise.then.wrappedCallback angular.js?body=1:10598
(匿名函数)angular.js?body=1:10684
$get.Scope.$eval angular.js?body=1:11577
$get.Scope.$digest angular.js?body=1:11422
$get.Scope.$apply angular.js?body=1:11683
完成角度。js?body=1:7700
completeRequest angular.js?body=1:7866
xhr.onreadystatechange angular.js?body=1:7822
我在接收阵列时将角度$resource
方法设置为get
(或者在接收阵列时未设置isArray:true
)时看到了这一点
方法query
需要一个数组():
'query':{method:'GET',isArray:true}
get
需要一个对象:
'get':{method:'get'}
我必须将每个内部数组包装成一个虚拟的“行”散列。Angular不喜欢数组的数组,它需要对象的数组。此标记适用于新的json:
<div class="row" >
<div class="col-md-12" >
<div class="video_thumb" ng-scroll='video_list in VideoIndexScrollerSource' buffer-size='10' padding="2" >
<div class="row" ng-repeat="video in video_list.row">
<p>
<a ng-href="/guides/{{video._id}}" target="_self">
<img ng-src="{{video.thumb}}">
</a>
</p>
</div>
</div>
</div>
</div>
我怀疑angular中有一些解析代码,因为原始数据在plunk中工作,但在那里它已经被解析了,所以我违反了一些约定。该应用程序依赖Angular来解析响应。我使用的是一个资源“查询”方法,其中isArray为true——另一个类似的问题将此作为解决方案。你能包括你的$resource调用吗?(因为我们从堆栈跟踪中看到了问题所在:$get
get没有问题,它返回了一个数组数组,AngularJS显然不允许这样做。我必须用一个对象包装每个内部数组,一切都正常。下面显示了处理数据的略有不同的方法。正如我上面所说的,isArray是正确的。它是Angular需要将内部数组包装在对象中。