【问题标题】:Order data before selecting an option in dropdown在下拉列表中选择选项之前订购数据
【发布时间】:2015-07-27 20:42:10
【问题描述】:

我有一个下拉菜单,其中包含您可以在 HTML 中排序数据的选项:

<select ng-model="sortOrder" ng-options="option.value as option.name for item in options"></select>

此外,我还有使用 ng-repeat 填充数据并使用 sortOrder 模型通过下拉选项对数据进行排序的代码:

<div ng-repeat="hello in worlds" | filter:searchQuery | orderBy: sortOrder"

一切正常,数据按下拉列表中的选项排序,但我想在单击下拉列表中的选项之前按字母顺序对数据进行排序。或者,也许可以默认选择一个选项并对数据进行排序。 我一直在 stackoverflow 上寻找答案,但没有找到任何答案。

【问题讨论】:

  • 在控制器中设置sortOrder的默认值?注意:始终在 ng-model 中使用对象

标签: javascript html angularjs


【解决方案1】:

假设以下是sortOrder 模型中的值:

$scope.options = [
    {
        name: 'Name'
        value: 'name'
    },
    {
        name: 'Address'
        value: 'address'
    }
];

其中nameaddressworlds 模型的属性。

这会处理 sortBy - 您还需要 sortIn 功能 - 升序或降序。您为此使用另一个模型:

$scope.sortAscending = false;

因此,您的选择下拉菜单将是:

<select ng-model="sortOrder" ng-options="item.value as item.name
    for item in options"></select>

你重复的元素将是:

<div ng-repeat="hello in worlds" | filter:searchQuery | 
    orderBy:sortOrder:sortAscending"></div>

现在,为了获得默认的sortBy,您需要使用相同的引用 - 这样 AngularJS 将选择该值并正确绑定它

$scope.sortOrder = $scope.options[0].value;

这会将默认排序顺序设置为name 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    相关资源
    最近更新 更多