$window, $document
程序员文章站
2022-03-18 19:47:39
...
$window
-
ng
模块中的服务
这是一个浏览器端 window
对象的引用. 由于Javascript 中的window
是一个全局变量,它会给可测试性带来问题。在Angular中我们总会通过 $window
服务来引用它,因此在测试总它可以被改写、删除或模拟。
在下面的例子中,表达式可以像定义一个ngClick
指令一样,在当前作用域被严格的评估。因此, 在这种依赖于一个全局变量表达式中,不会因为不经意的编码而带来风险。
例子
html and javascript
<script>
angular.module('windowExample', [])
.controller('ExampleController', ['$scope', '$window', function($scope, $window) {
$scope.greeting = 'Hello, World!';
$scope.doGreeting = function(greeting) {
$window.alert(greeting);
};
}]);
</script>
<div ng-controller="ExampleController">
<input type="text" ng-model="greeting" aria-label="greeting" />
<button ng-click="doGreeting(greeting)">ALERT</button>
</div>
protractor
it('should display the greeting in the input box', function() {
element(by.model('greeting')).sendKeys('Hello, E2E Tests');
// If we click the button it will block the test runner
// element(':button').click();
});
$document
-
ng
模块中的服务
一个对于浏览器中的 window.document
对象的jQuery 或 jqLite 封装。
依赖
$window
例子
html
<div ng-controller="ExampleController">
<p>$document title: <b ng-bind="title"></b></p>
<p>window.document title: <b ng-bind="windowTitle"></b></p>
</div>
javascript
angular.module('documentExample', [])
.controller('ExampleController', ['$scope', '$document',
function($scope, $document) {
$scope.title = $document[0].title;
$scope.windowTitle = angular.element(window.document)[0].title;
}]);
推荐阅读
-
window.open不被拦截的实现代码_jquery
-
Goland 的安装及激活教程(window、linux下安装)
-
jquery $(document).ready() 与window.onload的区别_jquery
-
js中window.open的参数及注意注意事项
-
javascript简化代码 A=alert w=document.writeln_javascript技巧
-
window.onload 加载完毕的问题及解决方案(上)_javascript技巧
-
window.dialogArguments 使用说明_javascript技巧
-
什么是DOM(Document Object Model)文档对象模型_DOM
-
document.createElement("A")比较不错的属性_javascript技巧
-
document.getElementsByName和document.getElementById 在IE与FF中不同实现