javascript - 无法在 AngularJS 中运行动画演示

标签 javascript angularjs

我阅读了 Angular 动画文档重新创建演示。 如果单击 Fold In 按钮,文本将更改为 animate define演示 效果不佳。 动画 效果不佳。

这是我的代码: https://jsfiddle.net/jiexishede/5nokogfq/

在网络 Storm 中:
我将 var app = angular.module('app', []); 更改为 var app = angular.module('app', ['ngAnimate']); . 错误显示:

Uncaught Error: [$injector:unpr] Unknown provider: $$isDocumentHiddenProvider <- $$isDocumentHidden <- $$animateQueue <- $animate <- $compile <- $$animateQueue
http://errors.angularjs.org/1.5.8/$injector/unpr?p0=%24%24isDocumentHiddenP…eQueue%20%3C-%20%24animate%20%3C-%20%24compile%20%3C-%20%24%24animateQueue
    at angular.js:68
    at angular.js:4511
    at Object.getService [as get] (angular.js:4664)
    at angular.js:4516
    at getService (angular.js:4664)
    at injectionArgs (angular.js:4688)
    at Object.invoke (angular.js:4710)
    at angular.js:4517
    at getService (angular.js:4664)
    at injectionArgs (angular.js:4688)

如果您知道如何修复此错误,请编写好的演示。我现在就给你的答案投票。

最佳答案

我已经从你的 fiddler 那里复制了 JS:

 var app = angular.module('app', ['ngAnimate']);
   angular.module('app', ['ngAnimate']).animation('.fold-animation', ['$animateCss', function($animateCss) {
            return {
                enter: function(element, doneFn) {
                    var height = element[0].offsetHeight;
                    return $animateCss(element, {
                        addClass: 'red large-text pulse-twice',
                        easing: 'ease-out',
                        from: { height:'0px' },
                        to: { height:height + 'px' },
                        duration: 10 // one second
                    });
                }
            }
        }]);
   angular.module('app', ['ngAnimate']).controller('myctrl', function ($scope) {

    })

你做错的是多次使用 module "setter"函数。

在你写的第一行:

var app = angular.module('app', ['ngAnimate']);

这将定义一个名为 app 的新模块,并将模块实例分配给 app 变量。

从这里开始,您不能再声明名称为app的模块,只能获取该模块的实例。

当使用带有 2 个参数的 angular.module 函数时,您正在使用将创建新模块的“setter”。 要获取实例,请使用仅包含模块名称参数的 angular.module 函数。

angular.module('app', ['ngAnimate']);    
var app = angular.module('app');

因此修复您的代码:

angular.module('app', ['ngAnimate']);
angular.module('app').animation('.fold-animation', ['$animateCss', function($animateCss) {
            return {
                enter: function(element, doneFn) {
                    var height = element[0].offsetHeight;
                    return $animateCss(element, {
                        addClass: 'red large-text pulse-twice',
                        easing: 'ease-out',
                        from: { height:'0px' },
                        to: { height:height + 'px' },
                        duration: 10 // one second
                    });
                }
            }
        }]);
angular.module('app').controller('myctrl', function ($scope) {

    })

关于javascript - 无法在 AngularJS 中运行动画演示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41382606/

相关文章:

AngularJS 在应用程序启动时加载配置

javascript - 在 HTML Canvas 上填充某些像素

javascript - 当您使用 JavaScript 函数作为类时,它们是否仍然以自上而下的方式进行解析?

javascript - 如何将 "summarize"整数数组转换为具有范围的字符串?

javascript - 函数的 `__proto__` 是否等于 `Function.prototype` ?

javascript - 如何将非叶节点之前显示加号的方式更改为在 extjs 树面板中包含任何子节点的节点之前显示加号的方式?

angularjs - 清除特定 View 的 $stateParams

javascript - i10n angularjs 分配翻译变量

json - Angular 的 $http.get 期望 JSON 使用什么语法?

javascript - 添加自定义复选框指令(具有隔离范围)后, Angular 内置指令不起作用