Javascript 角度';s$window服务在IE8中返回未定义
我已经创建了一个名为Javascript 角度';s$window服务在IE8中返回未定义,javascript,angularjs,internet-explorer-8,Javascript,Angularjs,Internet Explorer 8,我已经创建了一个名为slideshow的指令,其中包含一些双向绑定到ng样式的范围变量。此指令是一个响应式旋转木马,它基于使用$window sevice获取的窗口高度 我已经在IE8VM中测试了这个指令,不幸的是,ng样式在ie8中根本没有输出样式,这是因为$window服务没有定义?你知道如何让它正常工作吗 如图所示: 这在现代浏览器上非常有效: js:slideshow指令 'use strict'; angular.module('alexApp') .directive(
slideshow
的指令,其中包含一些双向绑定到ng样式的范围变量。此指令是一个响应式旋转木马,它基于使用$window sevice获取的窗口高度
我已经在IE8VM中测试了这个指令,不幸的是,ng样式在ie8中根本没有输出样式,这是因为$window服务没有定义?你知道如何让它正常工作吗
如图所示:
这在现代浏览器上非常有效:
js:slideshow指令
'use strict';
angular.module('alexApp')
.directive('slideshow', function($window){
return {
restrict: 'A',
templateUrl: 'template1.html',
controller: function($scope, Pages) {
$scope.adPageData = Pages;
$scope.adpageLength = $scope.adPageData.length;
},
link: function postLink(scope, element, attrs) {
var targetRatio = 0.8419689;
var navigationOffset = 92;
var currentPageIndex = 0;
scope.initializeWindowSize = function() {
scope.pageCollectionWidth = $window.innerWidth;
scope.pageCollectionHeight = $window.innerHeight;
scope.pageCollectionWidthTotal = scope.pageCollectionWidth + 'px';
scope.properPageWidth = ( scope.pageCollectionHeight-navigationOffset)*targetRatio + 'px';
scope.properPageWidthLength = ((scope.pageCollectionHeight-navigationOffset)*targetRatio)*scope.adpageLength + 'px';
scope.leftPageOffset = scope.pageCollectionHeight/4+'px';
scope.currentPageOffset = currentPageIndex*(-(scope.pageCollectionHeight-navigationOffset)*targetRatio)+'px';
}
scope.initializeWindowSize();
//alert('initi');
return angular.element($window).bind('resize', function() {
scope.initializeWindowSize();
//alert('resized');
return scope.$apply();
});
}
};
});
html-template1.html:
<script type="text/ng-template" id="template1.html">
<div class="weekly-viewport" ng-style="{width:pageCollectionWidthTotal}">
<ul class="page-collection" ng-style="{width:properPageWidthLength, left:leftPageOffset, marginLeft:currentPageOffset }">
<li class="page-layout" ng-repeat="page in adPageData.pages" ng-style="{width:properPageWidth}">
<ul class="page shop-local-page">
<li class="imageurl"><img ng-src="{{page.imageurl}}" alt="" /></li>
</ul>
</li>
</ul>
</div>
</script>
这不是未定义的
$window
服务,而是IE8缺少window.innerHeight/Width
如果您使用的是jQuery,请使用$(window).height()/width()
如果未对IE使用此回退:
scope.pageCollectionWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
scope.pageCollectionHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
你用的是哪个版本的angular?是的,我刚刚得到这个答案。。。解决它编辑您的问题并将其标记为正确。
scope.pageCollectionWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
scope.pageCollectionHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;