У меня есть элемент select option
, чтобы изменить способ сортировки упорядоченного списка. Каждый раз, когда я выбираю другой вариант, он запускает ng-click
<select>
<option ng-click="sortType = ['-grade','-year']">Grade</a>
<option ng-click="sortType = ['-year','-grade']">Year</a>
<option ng-click="sortType = 'student'">Name</a>
</select>
<ul>
<li ng-repeat="name in names | orderBy:sortType">{{name.student}} from {{name.year}}th year gets a {{name.grade}}</li>
</ul>
Это меняет используемую $scope
я использую, чтобы указать критерии для заказа списка
$scope.sortType = ['-grade','-year'];
Проблема в том, что, хотя в Firefox это работает отлично, в Chrome ng-click
просто не срабатывает.
Этот вопрос похож на этот вопрос, но в моем случае я не могу использовать ng-options
. Эта ошибка также обсуждается в этом потоке, но кажется, что они связывают ее с ошибкой, которая уже отмечена как разрешенная в Chrome.
Любой альтернативный способ сделать эту работу в Chrome приветствуется. Вы можете проверить Plunkr здесь.
Вместо этого вы можете использовать ng-model
в сочетании со value
. В этом случае при изменении значение будет присвоено sortType
и оно должно работать во всех браузерах (поддерживается AngularJS), я тестировал последние Chrome и Firefox.
angular.module('app', []).controller('controller', function($scope) {
$scope.names = [{student: 'John', year: 2015, grade: 'bachelor'}, {student: 'Arnold', year: 2016, grade: 'magister'}];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="controller">
<select ng-model="sortType">
<option value="['-grade','-year']">Grade</a>
<option value="sortType = ['-year','-grade']">Year</a>
<option value="sortType = 'student'">Name</a>
</select>
<ul>
<li ng-repeat="name in names | orderBy:sortType">{{name.student}} from {{name.year}}th year gets a {{name.grade}}</li>
</ul>
</div>
Здесь также обновляется плункер
ngChange
(необязательно) string Угловое выражение, которое будет выполнено, когда выбранные параметры будут изменены из-за взаимодействия пользователя с элементом select.<select ng-model="string" [ng-change="string"] [ng-options="string"]> </select>