【发布时间】:2017-08-16 11:23:41
【问题描述】:
我有一个使用 AngularJS 模板指令的 html 页面,如下所示:
<div class="row">
<div class="col-sm-12">
<div logo></div>
<div login-card></div>
<div info></div>
</div>
</div>
我的指令如下所示:
myApp.directive('logo', function(){
// Runs during compile
return {
templateUrl: "components/logo.html"
};
});
myApp.directive('loginCard', function(){
// Runs during compile
return {
templateUrl: "components/login-card.html"
};
});
myApp.directive('info', function(){
// Runs during compile
return {
templateUrl: "components/info.html"
};
});
有一个名为 loginController 的控制器在使用 ngRoutes 的路由中指定,如下所示:
when("/login", {
templateUrl: 'login/login.html?version=3',
controller: 'loginController'
}).
当我的页面完成加载后,我希望它直接滚动到较小设备上的登录卡。为此,我将此代码放在我的 loginController 中:
$document.ready( function () {
if ( $(window).width() < 768 ) {
$('html,body').animate({ scrollTop: $(".page-top").offset().top}, 'slow');
}
})
而且,我的 login-card.html 看起来像这样:
<div class="page-top">
--some code here--
</div
问题是 $document.ready 函数在部分加载之前触发,因此它找不到名为 page-top 的指定类的 div。
让 Angular 等到模板加载完毕,然后滚动到它的最佳方法是什么?
这可以通过使用promises来实现吗,我以前从未使用过它们?
【问题讨论】:
标签: javascript angularjs angularjs-directive