gpt4 book ai didi

javascript - 窗口调整信息的 Angular

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:37 24 4
gpt4 key购买 nike

我刚刚发布了这个 fiddle ,认为它对像我这样的人有帮助。它显示了如何将纯 javascript 传递给 Angular 范围。在这种情况下,作用域获取窗口内部大小信息。

http://jsfiddle.net/spacm/HeMZP/

对于个人使用,我会将这些信息传递给 angular scope:

  • 宽度和高度
  • 方向/方向变化
  • iframe 检测
  • 操作系统检测

使用navigator.platform 变量

function isInIFrame(){
return window.location !== window.parent.location;
}

function updateMediaInfoWH() {
if((typeof(mediaInfo.inIFrame)!='undefined') && (!mediaInfo.inIFrame)) {
mediaInfo.width = innerWidth;
mediaInfo.height = innerHeight;
updateMediaInfoOrientation();
}
tellAngular();
}

function tellAngular() {
console.log("tellAngular");
var domElt = document.getElementById('mainContainer');
scope = angular.element(domElt).scope();
console.log(scope);
scope.$apply(function(){
scope.mediaInfo = mediaInfo;
scope.info = mediaInfo.width;
});
}

欢迎任何评论。

最佳答案

我没有看到要回答的问题,所以我假设你的问题是在寻找对你的想法的意见。

开始使用 Angular 可能与您通常的工作方式有很大不同,主要是因为它们完全和完全使用了依赖注入(inject)。

您不必“告诉”Angular 任何事情,您应该能够通过注入(inject)的依赖项(Angular 服务)访问所有这些信息。

使用您向我展示的内容,它可能看起来像这样:

my.MediaInfo = function($window) {
this.window_ = $window;
this.inIframe = $window.self !== $window.top;
if(!this.inIFrame) {
this.width = $window.innerWidth;
this.height = $window.innerHeight;
} else {
this.width = this.height = ...;
}
}

my.angular.controller = function($scope, mediaInfo) {
// {width: X, height: Y, inIframe: false}
$scope.mediaInfo = mediaInfo;
}

那么您的 Angular 模块将如下所示:

angular.module('module', [])
.service('mediaInfo', my.MediaInfo)
.controller('mainCtrl', my.angular.controller);

希望这是一个很好的演示,说明您应该如何将数据导入 Angular。

关于javascript - 窗口调整信息的 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com