Soh*_*ani 21 javascript angularjs
在我的应用程序中的多个路线之间导航时,我在angularJS中遇到了document.ready的问题.它只适用于我使用ctrl + f5(页面重新加载); 它似乎在页面之间导航不会改变文档的状态以备就绪.
调节器
angular.element(document).ready(function() {
window.scrollTo(0,90);
});
Run Code Online (Sandbox Code Playgroud)
主要的html文件
<!DOCTYPE html >
<html ng-app="myApp">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title></title>
</head>
<body>
<div class="container">
<div ng-view></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
应用文件
var mainModule = angular.module('myApp', ['ui.bootstrap.dialog']);
function viewServiceConfig($routeProvider) {
$routeProvider.
when('/', {
controller: SomeController,
templateUrl: 'somehtml.html'
}).
when('/someroute', {
controller: SomeRouteController,
templateUrl: 'someroutehtml.html'
}).
otherwise({
redirectTo: '/'
});
}
mainModule.config(viewServiceConfig);
Run Code Online (Sandbox Code Playgroud)
dav*_*ekr 40
您可以在路线即定义你的控制器倾听SomeController和SomeRouteController对$viewContentLoaded事件.$viewContentLoaded每次重新加载ngView内容时都会发出,并且应该提供与document.readyangularjs中的路由时类似的功能:
function SomeController($scope) {
$scope.$on('$viewContentLoaded', function() {window.scrollTo(0,90);});
}
Run Code Online (Sandbox Code Playgroud)
该document.ready也触发只有当你加载一次index.html.加载路径配置中定义的部分模板时,不会触发它.
扩展@davekr的答案,我发现我需要添加$ timeout以确保摘要已完成并且html元素可用于查询:
function SomeController($scope) {
$scope.$on('$viewContentLoaded', function() {
$timeout(function(){
//Do your stuff
});
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多其他事件,这是唯一可行的方法.
| 归档时间: |
|
| 查看次数: |
34351 次 |
| 最近记录: |