AngularJS过滤器按变量选择

时间:2018-02-02 05:12:01

标签: angularjs

我有一个范围变量(顺便说一句,controllerAs = vm),并希望根据范围变量的值进行过滤。 e.g。

其中vm.myfilter在我的控制器中设置为“filtera”或“filterb”。我已经实现了两个自定义过滤器。

<span data-ng-bind-html="vm.myvalue | vm.myfilter"></span>

我试过了 和各种选项,但过滤器似乎不处理表达式。

2 个答案:

答案 0 :(得分:0)

您可以尝试删除过滤器的vm并尝试吗?

<span data-ng-bind-html="vm.myvalue | myfilter"></span>

请分享过滤器代码,如果它无法正常工作

答案 1 :(得分:0)

因此解决方案很容易-当我对角度的了解不多时,我问了这个问题。我想根据情况使用其他过滤器。

答案是..

chooseFilter() {
  if (myCondition) {
    return 'dateToNow';     
  } else {
    if (myCondition2) {
      return 'dateTime';
    } else {
      return 'dateToNow;;
    }
  }
}

但是,如果您想更加冒险,可以这样做。

在模板中。

import moment from "moment";

angular.module('myModule', [])
  .filter('dateToNow', () => date => moment(date).fromNow())
  .filter('dateTime', () => date => moment(date).format('LLL'));

在控制器中。

 _ssl = SSL.CertificateOptions()
runner = ApplicationRunner(u"wss://{server address}", realm=u"restricted_realm", ssl=_ssl)
runner.run(session, auto_reconnect=True)

@inlineCallbacks
def onJoin(self, data):
    print(data)

定义模块时...

template.yml

其中filtera是dateToNow,filterb是dateTime

我很欣赏还有其他技术,例如让过滤器自己决定甚至链接过滤器并允许每个人决定。