在路由配置中定义 AngularJS 中的 ng-view 动画
Define animation for ng-view in AngularJS in routing configuration?
我已经看到了在点击/单击Angular 1.2按钮时向前和向后对ng-view进行动画处理的各种解决方法。这涉及在您的作用域上有一个方法,该方法将范围变量设置为在 ng-class 中使用的页面/动画中,以在具有 ng-view 指令的元素上设置一个类。在较大的应用程序上,这似乎不是很可扩展。我相信其中一部分是您将创建一个服务/工厂以注入控制器中,以免复制代码。但我真的想知道是否可以在路由器解析功能中执行一些操作,在那里为动画设置一些值并将它们发送到返回立即解析的承诺的服务。这可以在路由更改之前在 ng-view 元素上设置类,并可能以这种方式管理它。
有没有人有更明确的方式来处理正向和反向的 ng-view 动画,具体取决于用户要去的路线?
这是我一直在玩的一个概念,并且能够在一些中继器元素的视图中工作。我还没有达到动画ng-view
的地步......但应该给你一个很好的起点。
概念是在每个路由配置中存储一个ng-animate
对象。可以将范围对象传递给ng-animate
,而无需任何表达式。
function Ctrl($scope){
$scope.ANIM={enter: 'animate-enter', leave: 'animate-leave'};
}
<li ng-animate="ANIM">
在配置中:
$routeProvider.when('/foo', {
controller: 'Ctrl',
templateUrl:'view1.html',
anim:{enter: 'skew-enter', leave: 'skew-leave'}
})
然后在run()
监听$routeChangeStart
并从当前路由配置中获取动画
app.run(function($rootScope){
$rootScope.anim={enter: 'animate-enter', leave: 'animate-leave'}
$rootScope.$on('$routeChangeStart', function(event, current){
$rootScope.anim= current.anim
})
})
在我的沙盒版本中,我做到了:
function Ctrl($scope, $rootScope){
$scope.ANIM=$rootScope.anim;
}
再。。。这仍处于概念验证阶段。当我有 2 个具有相同 ng-animate 的视图并且在每个控制器中$scope.anim=$rootScope.anim
它可以工作时。
希望这有帮助...好奇你是否用它做了更多的事情
我发现有效的是利用 css 子类,以便在您的容器中绑定到名为"mode"的属性或类似的东西。
然后,每当您想要切换动画时,都可以更改这些动画,无论是使用$routeChangeSuccess还是其他内容取决于您。
- angularjs中的ng网格和ui网格有什么区别
- ng重复中的ng模型-初始化唯一作用域属性
- OnsenUI中的ng点击事件不会在Android模拟器上触发
- 删除ng模型中的ng模型输入值
- 为什么 HTML 中的 Value 属性在与 AngularJS 中的 ng-model 一起使用时不起作用
- 模块化与性能与性能与角度应用程序中的ng-include
- 在表单进入Angular中的ng-submit之前验证表单
- Ionic中的Added View显示为纯白色
- 如何访问ng重复中的ng重复外的ng模型长度
- angular 1.3中的ng选项在集合异步设置时忘记了ng模型
- 控制器内部的scope函数不根据视图中的ng模型更新值
- 访问一个控制器的ng隐藏值以在全局控制器中操纵另一个控制器中的ng样式
- 自定义指令中的ng类不观察更新
- 输入文本的ng重复没有填充指令中的ng模型
- 如何更好地利用angular.js应用程序中的ng repeat和指令
- 如何在控制器中切换此notificationDirective中的ng类
- 在路由配置中定义 AngularJS 中的 ng-view 动画
- ngAnimate没有在Angular 1.2的ng-view中添加ng-enter类
- AngularJs链接到ng-view html页面中的ng-include
- 用Backbone.js为特定的路由注入局部视图,比如AngularJs中的ng-view