在我的应用程序中的多条路线之间导航时,我在angularJS中遇到document.ready问题。它仅在使用ctrl + f5(页面重新加载)时有效;似乎在页面之间导航不会将文档的状态更改为就绪。
控制者
angular.element(document).ready(function() { window.scrollTo(0,90); });
主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>
应用程式档案
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);
您可以在路由定义你的控制器即听SomeController和SomeRouteController对$viewContentLoaded事件。$viewContentLoaded每次重新加载ngView内容时都会发出,并且应提供与document.readyangularjs中路由时类似的功能:
SomeController
SomeRouteController
$viewContentLoaded
document.ready
function SomeController($scope) { $scope.$on('$viewContentLoaded', function() {window.scrollTo(0,90);}); }
该document.ready也触发只有当你加载一次index.html。加载路由配置中定义的部分模板时,不会触发该事件。
index.html