当前位置: 首页 > 面试题库 >

根据屏幕分辨率AngularJS更改指令的templateUrl

拓拔稳
2023-03-14
问题内容

我需要根据屏幕分辨率更改templateURL,例如,如果我的屏幕宽度小于768px,则必须加载“ templates / browse-content-
mobile.html”;如果屏幕宽度大于768px,则必须加载“ templates / browse-content” .html”。

当前使用的代码。

app.directive('browseContent', function() {
    return {
        restrict: 'E',
        templateUrl: template_url + '/templates/browse-content.html'
    }
});

在这里我正在尝试此代码

 app.directive('browseContent', function() {
    screen_width = window.innerWidth;
    if (screen_width < 768) {
        load_tempalte = template_url + '/templates/browse-content-mobile.html';
    } else if (screen_width >= 768) {
        load_tempalte = template_url + '/templates/browse-content.html';
    }
    return {
        restrict: 'E',
        templateUrl: load_tempalte
    }
});

此代码块正常工作,它根据那里的分辨率加载移动和桌面页面,但是当我调整页面大小时,它保持不变…

例如,如果我在最小化窗口(480px)中打开浏览器并将其最大化为1366px,则templateUrl与“ /templates/browse-
content-mobile.html’”相同,它必须为“ /templates/browse-content.html”


问题答案:

在您的情况下,您可以侦听window.onresize事件并更改一些范围变量,这些变量将控制模板url,例如在中ngInclude

app.directive('browseContent', function($window) {
    return {
        restrict: 'E',
        template: '<div ng-include="templateUrl"></div>',
        link: function(scope) {

            $window.onresize = function() {
                changeTemplate();
                scope.$apply();
            };
            changeTemplate();

            function changeTemplate() {
                var screenWidth = $window.innerWidth;
                if (screenWidth < 768) {
                    scope.templateUrl = 'browse-content-mobile.html';
                } else if (screenWidth >= 768) {
                    scope.templateUrl = 'browse-content.html';
                }
            }
        }
    }
});

演示:http://plnkr.co/edit/DhwxNkDhmnIpdrKg29ax?p
= preview



 类似资料:
  • 功能介绍 获取百度移动统计平台的全部屏幕分辨率列表 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/config/getScreenList?access_token={ACCESS_TOKEN} 请求参数 参数名 类型 描述 样例 access_token string 用户登入后获取的token 1.a6b7dbd428f731035f771b8d

  • Android设备具有mdpi、hdpi、xhdpi、xxhdpi等屏幕分辨率。在Android系统中编程时,我会用这些分辨率为手机编写不同的代码。但Flutter是android和ios的开发环境。我需要为不同分辨率的android和ios手机分别编程吗?ios中是否有mdpi、hdpi、xhdpi等分辨率?

  • 问题内容: 我很难获得较低的屏幕分辨率,因为我的屏幕分辨率为1920x1080。 有谁知道如何获得屏幕分辨率的高度和宽度? 我在1024x768分辨率上检查了我的作品,结果全部乱成一团。 问题答案: 无法从CSS获取屏幕高度。但是,从CSS3开始,您可以使用媒体查询来根据分辨率控制模板的显示。 如果要使用媒体查询基于高度进行编码,则可以定义样式表并像这样调用它。

  • 问题内容: 我需要找到访问我的网站的用户屏幕的屏幕分辨率? 问题答案: 您无法使用纯PHP做到这一点。您必须使用JavaScript来完成。有几篇有关如何执行此操作的文章。 本质上,您可以设置cookie,甚至可以执行一些Ajax来将信息发送到PHP脚本。如果使用jQuery,则可以执行以下操作: jQuery: PHP(some_script.php) 所有这些实际上都是最基本的,但是它应该可以

  • 引用脚本的内容: OutFile "ScreenRes.exe" Name "Get User Screen Resolution" Caption "Get User Screen Resolution" XPStyle "on" Function ".onInit" System::Call 'user32::GetSystemMetrics(i 0) i .r0' System::Call

  • 我有一个可折叠的导航条构建与bootstrap 4。我使用了col-sm-2和navbar-expand-sm来使它以相同的屏幕尺寸折叠成一个汉堡包,它应该占据整个宽度。 问题是在sm屏幕尺寸以上,我希望它有h-100,所以它是一个侧栏,但作为sm/xs,我希望它只是占用拨动按钮所需的空间。 有没有办法用bootstrap来实现这一点,或者我被困在jquery中添加/删除h-100类?