2015-11-20 5 views
0

Я искал время для поиска в Google, и до сих пор я нашел, как изменить размер окна с помощью директивы изменения размера окна, но в моем коде я использую window.innerHeight, чтобы получить начальную высоту. Я могу использовать его в любое время, кроме случаев, когда мне нужно событие, когда оно изменяется. JavaScript window resize event не срабатывает для меня по некоторым причинам. Вот мой код внутри контроллера:Событие изменения размера окна в AngularJS

function adjustH() { 
    var bodyElem = document.getElementsByTagName('body')[0]; 
    var topP = window.getComputedStyle(bodyElem, null).getPropertyValue('padding-top'); 
    topP = topP.substring(0, topP.indexOf("px")); 
    var bottomP = window.getComputedStyle(bodyElem, null).getPropertyValue('padding-bottom'); 
    bottomP = bottomP.substring(0, bottomP.indexOf("px")); 
    vm.h = window.innerHeight - topP - bottomP - 20; 
} 

window.onresize = function(event) { 
    adjustH(); 
} 

Может кто-нибудь сказать мне, если это невозможно сделать это таким образом, и я должен идти по пути директивы? Или, если это возможно, скажите мне, что мне не хватает.

ответ

1

Если вы работаете с angularJS, вы передали $ window в качестве зависимости от вашего контроллера.

У меня были подобные проблемы с этим раньше, и это было потому, что депоэнденция не была установлена. Надеюсь, это поможет.

+0

Я попытался, но все равно не сработал :( – serge

+0

Было бы полезно, если бы вы добавили свой контроллер angularJS и любые директивы или службы, которыми пользуетесь – Tekill

+0

Ничего, вы правы. Но единственное, что я не понимаю, это то, почему я 'window.innerHeight' работал, и мне не нужно было передавать его контроллеру. – serge

-1

После прочтения вашего комментария, который заявил

Также мой холст установлен height="{{vm.h}}" но это только изменяет, когда я мыши над

кажется, что вам нужно вызвать $scope.$apply() (или $rootScope.$apply()) для того, для обновления свойства высоты элемента.

Если вы добавите больше кода из своей директивы/контроллера, я могу дать вам более подробный ответ.

+0

Я попробую это и дам вам знать – serge

Смежные вопросы