ng-animate影响输入元素,尽管它不应该

时间:2014-07-15 10:42:54

标签: javascript angularjs animation

我是angularjs的新手,我试图只为我想要动画的元素制作动画。

我已将ngAnimate模块注入我的应用程序中,如下所示:

var mrApp = angular.module("mrApp", ["ngRoute", "ngAnimate", "templates"]);

这似乎会影响页面中具有ng-show或ng-hide,ng-repeat等的每个元素。根据文件,它应该是什么。

我的问题是:我做错了吗?我的应用程序是否应该有多个模块,以便能够指定应该设置动画的组件?如果没有,我如何仅定位动画的特定元素?

编辑:这样的事情?尝试使用classname animate-item定位元素。似乎不起作用?

var mrApp = angular.module("mrApp", ["ngRoute","ngAnimate","templates"]);

mrApp.config(['$animateProvider', function($animateProvider) {
    $animateProvider.classNameFilter(/animate-item\b/g);
}]);

1 个答案:

答案 0 :(得分:0)

来自此问题:https://github.com/angular/angular.js/issues/5172

您可以使用$animateProvider.classNameFilter这种方式角度将仅为特定类设置动画。您应该在应用程序的config角度或根控制器中注入提供程序。

编辑:以下是提供商的文档:https://docs.angularjs.org/api/ng/provider/ $ animateProvider

基本上你应该提供RegExp

编辑:我在这里查看了$animateProvider的代码:https://github.com/angular/angular.js/blob/master/src/ng/animate.js#L5请看下面的代码:

this.classNameFilter = function(expression) {
    if(arguments.length === 1) {
      this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;
    }
    return this.$$classNameFilter;
  };

这意味着您应该按如下方式传递表达式:

$animateProvider.classNameFilter(new RegExp('/animate-item\b/g'));