【发布时间】:2014-04-01 22:12:59
【问题描述】:
我试图弄清楚如何编写一个非常基本的 AngularJS 应用程序,该应用程序在单击按钮时执行动画,我不知道为什么它不起作用我逐字复制了一个教程,但无法弄清楚为什么教程是错误的。
更新: 我得到了它的工作,由于某种原因,在 html 标记内还有另一个 ng-app。如果您复制所有内容,您可以复制下面的代码并立即加载并播放动画:
下面是 animatetest.html 的样子:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Top Animation</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css">
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
</head>
<body ng-app="app" ng-controller="AppCtrl as app">
<button id="my-button" class="btn-primary" ng-click="app.fadeIt()">Click to fade</button>
<div id="my-badge" class="badge" hide-me="app.isHidden">Fade me</div>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular-animate.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/1.11.6/TweenMax.min.js"></script>
<script src="test.js"></script>
</body>
</html>
这就是 test.js 的样子:
var app = angular.module("app", ["ngAnimate"]);
app.controller("AppCtrl", function () {
this.isHidden = false;
this.fadeIt = function () {
this.isHidden = !this.isHidden;
}
});
app.directive("hideMe", function () {
return function (scope, element, attrs) {
scope.$watch(attrs.hideMe, function (newVal) {
if (newVal) {
TweenMax.to(element, 1, {opacity: 0});
}
})
}
});
更新 2:这是一个示例 plunker,它比上面的示例好 10 倍,因为它不需要第三方 TweenMax 库来执行实际动画:
【问题讨论】:
-
您很好地解释了您的问题并展示了代码,更进一步,如果您在 plnkr.co 工作的同时学习技巧,这样您就可以与其他人分享实时样本可以编辑以使您得到正确的答案。
标签: javascript angularjs