将函数作为 AngularJS 中的选择值传递
Pass function as select value in AngularJS
我有一个电影列表,我想从下拉列表中按选项进行排序。我正在使用自定义函数进行排序以排除非数字选项。直接传递函数时它工作正常,但我不确定如何将该函数作为下拉列表中的值传递。
<select name="sort" id="" ng-model="filters">
<option value="sortByRtRating">Rotten Tomatoes rating</option>
<option value="sortByImdbRating">IMDB rating</option>
</select>
<div ng-repeat="movie in movieList | toArray | orderBy:filters.sort:true">
$scope.sortByRtRating = function(item) {
if (!item.details) return -1;
if (typeof item.details.rt.rating != 'number')
return -1;
return item.details.rt.rating;
}
$scope.sortByImdbRating = function(item) {
if (!item.details) return -1;
if (typeof item.details.imdb.rating != 'number')
return -1;
return item.details.imdb.rating;
}
有两种
方法可以解决这个问题 - 具体取决于您如何实现select
- 从而选择ng-model
将包含什么。
#1 - 将函数名称作为选择的 ng 模型
当您使用正常<options>
创建select
时 - 即没有ng-options
(就像您所做的那样) - ng-model
只能将函数名称保存为字符串 - 这是<option>
的值。
<select ng-model="filterFnName">
<option value="sortByRtRating">Rotten Tomatoes rating</option>
<option value="sortByImdbRating">IMDB rating</option>
</select>
然后你需要$eval
函数从函数名称中取出(函数需要在作用域中公开):
<div ng-repeat="movie in movieList | orderBy:$eval(filterFnName):true">{{movie}}</div>
#2 - 具有作为选择的ng模型的功能
这只有在ng-options
的情况下才能实现,因为 Angular 可以绑定到复杂对象(包括函数)。
您可以在控制器中定义以下内容:
$scope.filterFns = [
{l: "Rotten Tomatoes rating", fn: sortByRtRating},
{l: "IMDB rating", fn: sortByImdbRating}
];
$scope.filterFn = sortByRtRating;
function sortByRtRating(item){...}
function sortByImdbRating(item){...}
您可以选择并使用实际的函数对象:
<select ng-model="filterFn" ng-options="f.fn as f.l for f in filterFns">
</select>
<div ng-repeat="movie in movieList | orderBy:filterFn:true">{{movie}}</div>
普伦克
相关文章:
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 如何将输入范围的值传递给JS中的变量
- 如何将值传递给wicket中的javascript函数
- 仅当值为1时禁用选择值
- 将值传递给jquery创建的输入字段
- 选择值,然后只调用函数
- 需要将select标记选项值传递给ajax函数
- 使用Ajax将PHP值传递给javascript
- 将javascript值传递给PHP
- 将javascript值传递给php是正确的方法
- 将不属于表单的HTML页面中的值传递给php页面
- Grails-设置g:点击img标签选择值
- Angular,将文本框的动态值传给控制器
- 在key up函数上将文本框值传递给javascript
- 将多个选择值传递给 Javascript API 函数
- 点击一个选择,然后将值传递给“;立即购买”;链接到唯一url的按钮
- 使用Javascript和Json将选择选项值传递给PHP并从数据库中检索数据
- 我可以将选择值作为参数传递给onchange函数吗?
- 如何将一个选择值传递给Angularjs的模态表单
- 将 Javascript 组合框选择值传递给 java 方法