AngularJS ng-repeat过滤器在硬编码时工作,但在作为控制器变量传递时不起作用

时间:2017-04-14 18:53:56

标签: javascript html angularjs angularjs-ng-repeat

所以我想制作一个下拉菜单,改变ng-repeat的过滤值,如下所示:

  <div ng-repeat="{{filter}}">

所以我在控制器中有这一行,现在是硬编码的

  $scope.filter = 'lang in langs | filter:{type:\'Interpreted\'}';

我可以验证{{filter}}是否吐出了字符串,但是当将字符串作为双括号变量时,仅当它被硬编码时,ng-repeat不起作用。你能否通过角度控制器变量到其他角度函数,如ng-repeat?

1 个答案:

答案 0 :(得分:0)

为什么不简单地将$filter服务注入您的控制器并在那里进行过滤。你可以简单地在控制器中过滤你的语言,如下所示:

$scope.filteredLangs = $filter('filter')($scope.langs, {type:'Interpreted'});

然后您可以通过ngRepeat指令重复过滤的lang:

<div ng-repeat="lang in filteredLangs">

请记住,ngRepeat指令会评估表达式,因此您不需要像示例中那样使用花括号。

如果您只想更改过滤器中的类型,则只需更新控制器中的变量:

$scope.myType = "Interpreted";

在视图中:

<div ng-repeat="lang in langs | filter: {type: myType}">