2014-03-02 132 views
0

我在短角范围和NG-重复

问题如何处理我的控制器内的NG-重复创建隔离范围是什么?

要阅读我有继续阅读下面的完整的问题:

我有时限的集合,他们每个人还具有捕捉(基本图像)的集合。

HTML

<ul> 
    <li ng-repeat="timeline in timelines | filter:search | orderBy:'event_date':sort"> 
     <ul ng-if="timeline.captures"> 
      <li ng-repeat="captures in timeline.captures | limitTo:imageLimit"> 
       <img ng-src="<% captures.capture_location %>"> 
      </li> 
     </ul> 
     <a ng-click="(imageLimit = imageLimit + 1)">Load more</a> 
    </li> 
</ul> 
  1. 我想限制被装载在页面加载图像的数量..这我能够使用limitTo

  2. 做我想要加载更多用户点击“加载更多”时的图像。我还可以通过ng-click="(imageLimit = imageLimit + 1)

这样做我想要做什么:

我想提取了这一点,作为一个功能

so that the following 
<a href="#" ng-click="(imageLimit = imageLimit + 1)">Load more</a> 
becomes 
<a href="#" ng-click="loadMore()">Load more</a> 

要做到这一点,我尝试以下:

我的控制器内

$scope.imageLimit = 1; // number of images to show initially on page load 

$scope.loadMore = function() { 
    $scope.imageLimit += 1; 
}; 

现在发生的是,这不会在重复范围内创建imageLimit模型(如果您了解我的意思),而是在控制器范围内创建imageLimit模型。这也是预期的行为,但我想知道如何在控制器内部的重复时间线(该时间线的隔离范围)内操作范围?

回答

3

如果我理解正确,您希望能够为每个时间线loadMore(),独立于其他人。因此,loadMore()功能应以时间轴作为参数,并限制应该是一个时间轴的属性:在您的模板

angular.forEach($scope.timelines, function(timeline) { 
    timeline.imageLimit = 10; // default value 
}); 

$scope.loadMore(timeline) { 
    timeline.imageLimit++; 
} 

和:

<li ng-repeat="captures in timeline.captures | limitTo:timeline.imageLimit"> 
... 
<a ng-click="loadMore(timeline)">Load more</a> 
+0

谢谢。工作完美..更重要的是,我学会了如何解决这样的问题。 –