Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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 带ng滚动和ng重复的AngularJS_Javascript_Angularjs_Json_Angular Ui_Ui Scroll - Fatal编程技术网

Javascript 带ng滚动和ng重复的AngularJS

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" &

将angular ui与angular一起使用。标记包括一个
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需要将内部数组包装在对象中。