我正在使用jasmine-npm.jasmine-init
设置它,以便您可以jasmine
在终端中运行以测试您的代码.
我记得之前在浏览器中看过这些测试,并希望在那里看到它们.我如何在浏览器中运行测试?(这似乎应该是一个容易研究的东西,但我发誓我花了2个多小时研究这个并且无法弄明白).
在Angular中,$controller
有两个参数 - constructor
和locals
.
文档基本上只是说:
locals
是一个对象.但我仍然不明白它的作用.任何人都可以详细说明吗?
考虑:
angular
.module('app', [])
.controller('MainController', function($scope) {
$scope.$watch('bool', function(newVal, oldVal) {
});
console.log($scope);
});
Run Code Online (Sandbox Code Playgroud)
和
<body ng-controller='MainController'>
<p ng-class="{'blue': bool, 'red': !bool}">ngClass</p>
<p ng-show='bool'>ngShow</p>
<input type='checkbox' ng-model='bool' />
</body>
Run Code Online (Sandbox Code Playgroud)
似乎有3名观察者被创建:
$scope.$watch
.ngShow
.ngClass
.(注意:数据绑定中涉及的指令使用 $ scope.$ watch内部.)
我原本以为,因为他们都在看bool
房子,所以只有一个观察者,并且它有多个听众回调.
编辑:它是否说,"已经bool
改变?如果是这样的话cb1
.已经bool
改变了?如果是这样的话cb2
.已经bool
改变了?如果是这样的话cb3
." 或者是它的情况下,它的话说,"已经bool
改变了吗?如果是这样运行的cb1
,cb2
和cb3
".如果是前者,为什么会这样呢?
问题:
bool
3次而不是1次的变化?示例2) - 假设您要确保表单中的两个密码匹配,如果不匹配,则显示错误.假设你已经拥有:
ng-class="{invalid: …
Run Code Online (Sandbox Code Playgroud) HTML
<div class='container'>
<p>foo</p>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.container {
color: red;
}
p {
color: blue
}
Run Code Online (Sandbox Code Playgroud)
应用的颜色为蓝色.为什么是这样?我认为,由于.container
具有更多的特异性p
,颜色最终会变成红色.
这里发生了什么?它为什么是蓝色的?
我的假设是,这个过程是" p
有任何选择器吗?如果是这样的话,请不要使用它.container
.如果它没有任何样式,它会查找并使用它的样式.container
."
它在文档中说ngChange
不会触发:"如果模型以编程方式更改而不是通过更改输入值".
这是否意味着,如果你曾经改变模型编程,你不能用ngChange
?
或者它是否意味着你不能使用ngChange
if:
1)您以编程方式更改模型
和
2)您无法通过输入字段更改模型
HTML
<textarea rows='5'>
sdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadjsdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadjsdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadjsdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadj
</textarea>
<br />
<button id='scroll-to-cursor'>Scroll to Cursor</button>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
$('#scroll-to-cursor').on('click', function() {
// ?
});
Run Code Online (Sandbox Code Playgroud)
期望的结果
注意:我正在使用jQuery.
我能弄清楚如何滚动的唯一方法是使用jQuery的scrollTop
功能.它将滚动位置设置为"在可滚动区域上方隐藏的像素数".
我已经在下面描述了这个问题.传递红线的长度(以像素为单位)scrollTop
应该可以解决问题.但我无法弄清楚如何获得线的长度.
请注意这个问题.我看到除了触发tab按键事件之外还有其他方法,但我仍然想知道为什么触发tab键按下事件不会将焦点移动到下一个输入字段.
HTML
<textarea></textarea>
<textarea></textarea>
<textarea></textarea>
Run Code Online (Sandbox Code Playgroud)
JS
$('textarea').on('keydown', function(e) {
if (e.metaKey && e.which === 40) {
console.log('test');
$(this).trigger({
type: 'keypress',
which: 9
});
}
});
Run Code Online (Sandbox Code Playgroud) 演示视频:https://www.youtube.com/watch?v =UBfnvx6jC_A
我跟随Udacity的离线Web应用程序课程,以使我的应用程序脱机工作.这是我的代码:
main.js
// other stuff above
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/service-worker.js').catch(function() {
console.log('Service worker registration failed.');
});
}
Run Code Online (Sandbox Code Playgroud)
服务worker.js
let currCacheName = 'premium-poker-tools-1';
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(currCacheName).then(function(cache) {
let promise = cache.addAll([
'/',
'app.js',
// 'c7d016677eb7e912bc40.worker.js',
// 'f328c7e2b379df12fa4c.worker.js',
'static/logo.png',
'static/favicon.png',
'static/loading.svg',
'static/cards/ace-of-clubs.png',
'static/cards/king-of-clubs.png',
'static/cards/queen-of-clubs.png',
'static/cards/jack-of-clubs.png',
'static/cards/ten-of-clubs.png',
'static/cards/nine-of-clubs.png',
'static/cards/eight-of-clubs.png',
'static/cards/seven-of-clubs.png',
'static/cards/six-of-clubs.png',
'static/cards/five-of-clubs.png',
'static/cards/four-of-clubs.png',
'static/cards/three-of-clubs.png',
'static/cards/two-of-clubs.png',
'static/cards/ace-of-spades.png',
'static/cards/king-of-spades.png',
'static/cards/queen-of-spades.png',
'static/cards/jack-of-spades.png',
'static/cards/ten-of-spades.png',
'static/cards/nine-of-spades.png',
'static/cards/eight-of-spades.png',
'static/cards/seven-of-spades.png',
'static/cards/six-of-spades.png',
'static/cards/five-of-spades.png',
'static/cards/four-of-spades.png',
'static/cards/three-of-spades.png',
'static/cards/two-of-spades.png',
'static/cards/ace-of-hearts.png',
'static/cards/king-of-hearts.png',
'static/cards/queen-of-hearts.png',
'static/cards/jack-of-hearts.png',
'static/cards/ten-of-hearts.png',
'static/cards/nine-of-hearts.png', …
Run Code Online (Sandbox Code Playgroud) 我的Vue应用程序中有以下服务工作者代码:
main.js
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/service-worker.js').catch(function() {
console.log('Service worker registration failed.');
});
}
Run Code Online (Sandbox Code Playgroud)
服务worker.js
let currCacheName = 'premium-poker-tools-5';
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(currCacheName).then(function(cache) {
let promise = cache.addAll([
'/',
'app.js',
'c7d016677eb7e912bc40.worker.js',
'f328c7e2b379df12fa4c.worker.js',
'static/logo.png',
'static/favicon.png',
'static/loading.svg',
'static/cards/ace-of-clubs.png',
'static/cards/king-of-clubs.png',
'static/cards/queen-of-clubs.png',
'static/cards/jack-of-clubs.png',
'static/cards/ten-of-clubs.png',
'static/cards/nine-of-clubs.png',
'static/cards/eight-of-clubs.png',
'static/cards/seven-of-clubs.png',
'static/cards/six-of-clubs.png',
'static/cards/five-of-clubs.png',
'static/cards/four-of-clubs.png',
'static/cards/three-of-clubs.png',
'static/cards/two-of-clubs.png',
'static/cards/ace-of-spades.png',
'static/cards/king-of-spades.png',
'static/cards/queen-of-spades.png',
'static/cards/jack-of-spades.png',
'static/cards/ten-of-spades.png',
'static/cards/nine-of-spades.png',
'static/cards/eight-of-spades.png',
'static/cards/seven-of-spades.png',
'static/cards/six-of-spades.png',
'static/cards/five-of-spades.png',
'static/cards/four-of-spades.png',
'static/cards/three-of-spades.png',
'static/cards/two-of-spades.png',
'static/cards/ace-of-hearts.png',
'static/cards/king-of-hearts.png',
'static/cards/queen-of-hearts.png',
'static/cards/jack-of-hearts.png',
'static/cards/ten-of-hearts.png',
'static/cards/nine-of-hearts.png',
'static/cards/eight-of-hearts.png',
'static/cards/seven-of-hearts.png',
'static/cards/six-of-hearts.png',
'static/cards/five-of-hearts.png',
'static/cards/four-of-hearts.png',
'static/cards/three-of-hearts.png',
'static/cards/two-of-hearts.png',
'static/cards/ace-of-diamonds.png',
'static/cards/king-of-diamonds.png',
'static/cards/queen-of-diamonds.png',
'static/cards/jack-of-diamonds.png',
'static/cards/ten-of-diamonds.png',
'static/cards/nine-of-diamonds.png', …
Run Code Online (Sandbox Code Playgroud) javascript web-worker service-worker cachestorage worker-loader
javascript ×6
angularjs ×3
jquery ×2
cachestorage ×1
css ×1
html ×1
jasmine ×1
node.js ×1
scroll ×1
textarea ×1
v-for ×1
vue.js ×1
web-worker ×1
youtube-api ×1