javascript - Angular .js : How to get orderBy or filter from an unordered list to work?

标签 javascript angularjs

尝试根据价格和评级(在返回的对象中)进行排序。我宁愿按 ng-click an li 而不是使用选择菜单。这有可能吗?我一直在四处寻找,这是我想到的最接近的。

    <ul class="restaurant-filter">
        <li> <i class="icon-search"></i>Organize results by "Price" &amp; "Rating"&hellip;
            <ul ng-model="priceAndRating">
                <li ng-click="price">Price</li>
                <li ng-click="rating">Rating</li>
            </ul>
        </li>
    </ul>

    <ul class="available-restaurants">
        <li ng-repeat="restaurant in availableRestaurants | orderBy:priceAndRating" ng-click="addRestaurantToEvent(restaurant.restaurantName)">
            <h6>{{restaurant.restaurantName}}</h6>
            <p>label one two three for five six</p>

            <i class="icon-chevron-right"></i>                    
        </li>
    </ul>

availableRestaurants 是我的对象。

最佳答案

您没有向我们提供您的数据结构或您的 Controller ,因此我只是制作了一个简单的 Controller 来满足您的要求。这是 the fiddle .

注意:ng-click需要调用一个函数,或者执行一些代码。您可以编写一个函数文字来设置属性,但这是将 Controller 逻辑混合到 View 中(想想如果稍后需要更改排序会发生什么,您需要在 View ,这很糟糕)。

我添加了一个排序函数来处理这个问题,它只接受属性。您可以根据需要进行设置。

HTML:

<div ng-app="miniapp">
    <div ng-controller="Ctrl1">
        <ul class="restaurant-filter">
        <li> <i class="icon-search"></i>Organize results by "Price" &amp; "Rating"&hellip;
            <ul>
                <li ng-repeat="option in sortOptions" ng-click="setSort (option)">{{option}}</li>
            </ul>
        </li>
    </ul>

    <ul class="available-restaurants">
        <li ng-repeat="r in availableRestaurants | orderBy:sort">
            <span>{{r.name}} - {{r.rating}}</span>                  
        </li>
    </ul>
    </div>
</div>​

JS:

function Ctrl1($scope) {
    $scope.sortOptions = ["Price", "Rating"];
    $scope.sort = "Price";
    $scope.setSort = function(type) { $scope.sort = type.toLowerCase(); };
    $scope.availableRestaurants = [{name: "Chevy's", rating: 6, price: 6},
                                  {name: "Burger King", rating: 2, price: 1},
                                  {name: "Red Robin", rating: 4, price: 4},
                                  {name: "Carl's Jr", rating: 5, price: 2}];
}

关于javascript - Angular .js : How to get orderBy or filter from an unordered list to work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13711960/

相关文章:

javascript - 如何从 JavaScript 传递数据以在 Laravel 中执行数学运算

javascript - Packery - 通过 jquery 单击添加元素

javascript - 将 Java 的 PBEWithMD5AndDES 转换为 JavaScript

javascript - 如何执行多个回调并返回结果数组?

PHP 重写 AJAX post 请求

angularjs - 带有 $http 的 Access-Control-Allow-Headers 不允许请求 header 字段

javascript - 渲染器进程中外部安装的 Node 模块的 Electron 需要模块错误

javascript - 内存泄漏 : Remaining elements in cache and data_user in AngularJs

javascript - 拒绝不与 promise 链式工作

javascript - 外部 Javascript 文件如何影响 HTML 文件的 DOM?