我想做这样的事情。用例是我正在显示一个包含可配置列集的表,每个列都可能有一个与之关联的过滤器。请参阅this fiddle。
<div ng-app="">
<div ng-controller="MyCtrl">
{{money | filterStr}}
</div>
</div>
function MyCtrl($scope) {
$scope.money = 33;
$scope.filterStr = 'currency:"USD$"';
}
正如您所看到的,我基本上希望将过滤器字符串文本存储为范围变量,然后通过其名称在html中引用它。这不起作用,但有没有办法做这样的事情?
答案 0 :(得分:0)
如果您绝对需要在控制器$ scope中动态保存对过滤器的引用,则可以在控制器变量中创建对过滤器函数的引用,然后像在任何其他函数中那样在HTML中调用它,或者您可以对控制器中的数据运行过滤器并将输出保存到变量中。以下是使用货币过滤器(JS Fiddle here)执行此操作的两个示例:
<div ng-app="">
<div ng-controller="MyCtrl">
{{ moneyWithFilter }}
{{ currencyFilter(money, "USD$") }}
</div>
</div>
function MyCtrl($scope, currencyFilter) {
$scope.money = 33;
$scope.moneyWithFilter = currencyFilter($scope.money, "USD$");
$scope.currencyFilter = currencyFilter;
}
请注意,您必须附加字符串&#39;过滤器&#39;到所需的过滤器,以将其注入您的控制器。您可以阅读有关here的更多信息。我希望这有帮助!
答案 1 :(得分:0)
我用
做这样的事情 <a ng-click="setCurrent(m)">
{{m.name}}
</a>
<p ng-repeat="L in List | filter:current.name">
<a ng-click="add(w)">
{{w.Name}}
</a>
</p>
然后
function setCurrent(m) {
$scope.current = m;
}