ng-repeat,按最小值到最高值排序

时间:2015-04-08 20:14:40

标签: angularjs

我设法计算用户当前地理坐标和对象地理坐标之间的距离,这是工作plunker。如何从最小值到最高值对ng-repeat进行排序? 使用简单表达式的orderBy过滤器很容易,但这个打印距离的表达式有点棘手!谢谢。

HTML:

  <div data-ng-controller="restaurantlistController" >


    <div  ng-repeat="restaurant in restaurantList | orderBy: 'distance'" href="#">
    <article class="item_frame">
      <div class="marker_left_container">
        <span class="venu_type_text">{{restaurant.venueType}}</span>
        <span class="distance_from_user_rest"> distance: {{distanceTo(restaurant)}}</span>
        <span class="distance_from_user_rest2">from current location</span>
      </div>
      <div class="restaurant_details_container">
        <h1 class="restaurant_name_inlist">{{restaurant.Name}}</h1>
        <span class="restaurant_detail_inlist2">{{restaurant.subCuisine}}  <br />

     {{restaurant.subsubCuisine}}</span>
        <span class="restaurant_address">{{restaurant.address}}, <br />
        </span>
        <span class="restaurant_address">{{restaurant.cp}}, {{restaurant.city}}  <br />

        </span>
        <span class="restaurant_others">{{restaurant.phoneNumber}} <br />
        </span>
        <span class="restaurant_others">{{restaurant.website}}  <br />
        </span>
        <span>-------------------------------------------------</span>
      </div>
      </div>
    </article>
    <!--main article frame 1 -->
  </div>

3 个答案:

答案 0 :(得分:0)

您可以只对数组进行排序,而不是使用orderBy:

$scope.restaurantList.sort(function(a,b) { return someDistanceFunction(a,b) } );

答案 1 :(得分:0)

在您的控制器中,您应该将distanceTo功能更新为以下内容:

    $scope.distanceTo = function(restaurant) {
      var distance = GreatCircle.distance( restaurant.long,restaurant.lat, position.longitude, position.latitude)
      restaurant.distance = distance;
      return distance;
    }

现在你的过滤器应该有效,因为它正在检查restaurant.distance属性。

答案 2 :(得分:0)

如何将distanceTo函数作为orderBy谓词:

<div  ng-repeat="restaurant in restaurantList | orderBy:distanceTo" href="#">

来自orderBy documentation

  

通过表达式谓词对指定的数组进行排序。

     

比较器用来确定顺序的谓词   元件。

     

可以是以下之一:

     
      
  • 功能:Getter功能。此功能的结果将被排序   使用&lt;,===,&gt;操作者。
  •