angularjs指令教程
发布时间:2020-12-17 17:57:39 所属栏目:安全 来源:网络整理
导读:我是 angularjs的新手,我想了解指令的作用,但我找不到一个复杂的不同示例的教程,如果我可以在指令中移动以下代码,我很好奇. // hide the url bar var page = document.getElementById('page'),ua = navigator.userAgent,iphone = ~ua.indexOf('iPhone') || ~
我是
angularjs的新手,我想了解指令的作用,但我找不到一个复杂的不同示例的教程,如果我可以在指令中移动以下代码,我很好奇.
// hide the url bar var page = document.getElementById('page'),ua = navigator.userAgent,iphone = ~ua.indexOf('iPhone') || ~ua.indexOf('iPod'),ipad = ~ua.indexOf('iPad'),ios = iphone || ipad,// Detect if this is running as a fullscreen app from the homescreen fullscreen = window.navigator.standalone,android = ~ua.indexOf('Android'),lastWidth = 0; if (android) { // Android's browser adds the scroll position to the innerHeight. // Thus,once we are scrolled,the page height value needs to be corrected in case the page is loaded // when already scrolled down. The pageYOffset is of no use,since it always // returns 0 while the address bar is displayed. window.onscroll = function () { page.style.height = window.innerHeight + 'px' } } var setupScroll = window.onload = function () { // Start out by adding the height of the location bar to the width,so that // we can scroll past it if (ios) { // iOS reliably returns the innerWindow size for documentElement.clientHeight // but window.innerHeight is sometimes the wrong value after rotating // the orientation var height = document.documentElement.clientHeight; // Only add extra padding to the height on iphone / ipod,since the ipad // browser doesn't scroll off the location bar. if (iphone && !fullscreen) height += 60; page.style.height = height + 'px'; } else if (android) { // The stock Android browser has a location bar height of 56 pixels,but // this very likely could be broken in other Android browsers. page.style.height = (window.innerHeight + 56) + 'px' } // Scroll after a timeout,since iOS will scroll to the top of the page // after it fires the onload event setTimeout(scrollTo,1); }; (window.onresize = function () { var pageWidth = page.offsetWidth; // Android doesn't support orientation change,so check for when the width // changes to figure out when the orientation changes if (lastWidth == pageWidth) return; lastWidth = pageWidth; setupScroll(); })(); 解决方法
如果你对此感兴趣,我写了一个
blog entry not too long ago about the basics of directives.
至于将你拥有的东西转换为指令,它并不太疯狂. 你要做的只是使用你已经拥有的代码,但是注入$window而不是使用窗口. (主要用于测试目的).我还添加了一张支票,以确保它没有被应用两次. 所以它看起来像这样: app.directive('windowResizeThingy',function($window) { return { restrict: 'A',link: function(scope,elem,attr) { // make sure this doesn't get applied twice. if($window.windowResizeThingyApplied) return; $window.windowResizeThingyApplied = true; // hide the url bar var page = elem[0],ua = $window.navigator.userAgent,// Detect if this is running as a fullscreen app from the homescreen fullscreen = $window.navigator.standalone,lastWidth = 0; if (android) { // Android's browser adds the scroll position to the innerHeight. // Thus,the page height value needs to be corrected in case the page is loaded // when already scrolled down. The pageYOffset is of no use,since it always // returns 0 while the address bar is displayed. window.onscroll = function () { page.style.height = window.innerHeight + 'px' } } var setupScroll = $window.onload = function () { // Start out by adding the height of the location bar to the width,so that // we can scroll past it if (ios) { // iOS reliably returns the innerWindow size for documentElement.clientHeight // but window.innerHeight is sometimes the wrong value after rotating // the orientation var height = document.documentElement.clientHeight; // Only add extra padding to the height on iphone / ipod,since the ipad // browser doesn't scroll off the location bar. if (iphone && !fullscreen) height += 60; page.style.height = height + 'px'; } else if (android) { // The stock Android browser has a location bar height of 56 pixels,but // this very likely could be broken in other Android browsers. page.style.height = (window.innerHeight + 56) + 'px' } // Scroll after a timeout,since iOS will scroll to the top of the page // after it fires the onload event setTimeout(scrollTo,1); }; ($window.onresize = function () { var pageWidth = page.offsetWidth; // Android doesn't support orientation change,so check for when the width // changes to figure out when the orientation changes if (lastWidth == pageWidth) return; lastWidth = pageWidth; setupScroll(); })(); } }; }); 要应用它,您会发现之前应用它的#page元素: <div id="page" window-resize-thingy></div> ……那应该是真的.假设您运行的代码,它应该以相同的方式运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |