$ window加载ng-views

时间:2016-05-29 17:28:57

标签: angularjs

我有以下内容:

.directive('resizer', ['$window', function ($window) { return { restrict: 'A', link: function (scope, elem, attrs) {

        angular.element($window).on('load resize', function () {

          var sectionHeight = angular.element(document.querySelector('#aboutContentSection'))[0].offsetHeight;


          if (sectionHeight) {
              if (elem[0].scrollHeight + sectionHeight < $window.innerHeight) {
                elem.addClass('footerSetBottom')
              } else if (elem[0].scrollHeight + elem[0].offsetTop >= $window.innerHeight) {
                elem.removeClass('footerSetBottom')
              }
          }

        });


    }
}

}])

然而问题是,当我转到新页面时,我正在使用ng-view,上面的load没有被调用。

我假设这是因为页面已经过技术加载而且只使用了新的ng-view

所以我的问题 - 我应该使用什么构造来进入代码而不必刷新整个页面或调整窗口大小?

感谢。

1 个答案:

答案 0 :(得分:0)

为您的模块创建.run()函数,并在$routeChangeSuccess上听取事件$rootScope

像这样:

angular
  .module('YourApp')
  .run(runFn);

runFn.$inject = ['$rootScope','$window'];

function runFn($rootScope, $window){

  $rootScope.$on('$routeChangeSuccess', function(){
    angular.element($window).on('load resize', function () {
     //... Some Logic
    }
  })
}