У меня есть веб-приложение, которое необходимо просмотреть с ориентацией на ландшафт.
Для этого я создал функцию, которая проверяет innerWidth
и innderHeight
, и если ширина больше, чем высота, то счастливые дни. Это отлично работает, когда я загружаю страницу, но я также проверяю ориентацию при запуске события resize
.
Так поток моего кода -
- После запуска вызова
resize
события$scope.getOrienttion()
- Рассчитайте текущую ориентацию и возвращает результат
- изменения монитора к значению
$scope.getOrienttion()
с использованиемwatch
и обновить значение$scope.orientation
Этапы 1 и 2 выше, по-видимому, отлично работает, но мой watch
никогда не обнаруживает изменения в $scope.getOrienttion()
и запускается только при загрузке страницы. Я должен что-то делать неправильно, может кто-нибудь помочь мне найти проблему.
Вот соответствующие AngularJS -
christmasApp.controller('bodyCtrl', function($scope, $window){
angular.element($window).bind('resize', function(){
console.log('Event triggered');
$scope.getOrientation();
});
$scope.getOrientation = function(){
var w = $window.innerWidth,
h = $window.innerHeight;
var orientation = (w > h) ? 'landscape' : 'portrait'
console.log('Function triggered - ' + orientation)
return (w > h) ? 'landscape' : 'portrait';
};
$scope.$watch($scope.getOrientation, function(newValue, oldValue){
$scope.orientation = newValue;
console.log('Watch triggered - ' + newValue);
}, true);
});
А вот HTML, который имеет набор условный класс, в зависимости от значения $scope.orientation
(вероятно, не относится, но на всякий случай) -
<body <?php body_class(); ?> data-ng-controller="bodyCtrl">
<div id="orientationMask" data-ng-class="{visible: orientation != 'landscape'}">
<p>Please turn your device to the <b>landscape</b> orientation.</p>
</div>
{ Additional code, obscured by the mask if it is show... }
</body>
Бинго, благодарю вас за быстрый ответ. Я буду отмечать ваш ответ как можно скорее, как только мне позволено. –
@DavidGard Рад помочь вам .. Посмотрите на редактирование в моем ответе .., который очистит вашу концепцию относительно наблюдателей .. Спасибо :) –