我刚刚发布这个小提琴,认为这对像我这样的人有用。 它显示了如何将普通的javascript传递给角度范围。在这种情况下,范围会获取窗口内部信息。
http://jsfiddle.net/spacm/HeMZP/
为了个人使用,我将传递给角度范围这些信息:
使用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;
});
}
欢迎任何评论。
答案 0 :(得分:6)
我没有看到要回答的问题,因此我假设您的问题正在寻找您的想法的输入。
开始使用Angular可能与您正常工作的方式非常不同,主要是因为他们完全和完全使用依赖注入。
您不应该“告诉”Angular任何东西,您应该能够通过注入的依赖项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。