我有一个按钮
var startButton = $('#startButton').get(0);
Run Code Online (Sandbox Code Playgroud)
我将vanilla javascript onclick方法附加到按钮上,然后单击调用start.
startButton.onclick = start;
Run Code Online (Sandbox Code Playgroud)
我想使用函数表达式,但(由于提升?)这不会调用start
var start = function() {
console.log('requesting local stream');
startButton.disabled = true;
getUserMedia(constraints, gotStreamSuccess, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)
声明的函数可以
function start() {
console.log('requesting local stream');
startButton.disabled = true;
getUserMedia(constraints, gotStreamSuccess, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)
我该怎么写
startButton.onclick = start;
Run Code Online (Sandbox Code Playgroud)
这样它可以用于函数表达式吗?
谢谢
我使用mongo创建了一个本地数据库(实际使用本教程)
它有一个名为'simple'的数据库和名为'people'的集合.然后我用每个元素导入json
{
"id": 1,
"guid": "1581cfde-f2fc-44f8-8953-511331e943ab",
"isActive": true,
"firstName": "Ilene",
"lastName": "Kent",
"email": "carolegoodman@intrawear.com"
}
Run Code Online (Sandbox Code Playgroud)
然后,我在节点应用程序中创建架构和Person模型
var express = require('express');
var path = require('path');
var mongoose = require('mongoose');
var app = express();
app.set('port', (process.env.PORT || 5000));
mongoose.connect('mongodb://localhost/simple')
var personSchema = {
firstname: String,
lastname: String,
email: String
}
var Person = mongoose.model('Person', personSchema, 'people')
app.get('/users', function(req,res){
Person.find(function(err, doc){
var x = doc[0]
console.log(x)
console.log(Object.keys(x))
res.send(200);
});
});
Run Code Online (Sandbox Code Playgroud)
在Person模型上调用find()时,我得到了记录(对于console.log(doc [0])) - 返回的doc中的第一项:
{ _id: 548e41afa0bad91d53f34cce,
id: 0,
guid: …Run Code Online (Sandbox Code Playgroud) 我的bower.json文件中有angular,angular-ui-router和socket-io.
当我运行我的gulp文件(使用wiredep)时,两个角度脚本成功添加到我的index.html文件,但socket.io脚本不是 - 我无法弄清楚原因.谢谢你的帮助
//命令行
[21:56:06] Using gulpfile ~/dev/projects/ecommerceVidChat/gulpfile.js
[21:56:06] Starting 'default'...
[21:56:06] Starting 'bower-dependencies'...
[21:56:06] Finished 'bower-dependencies' after 6.24 ms
[21:56:06] Finished 'default' after 7.24 ms
Run Code Online (Sandbox Code Playgroud)
//bower.json
"dependencies": {
"angular": "~1.3.13",
"socket.io": "~1.3.4",
"angular-ui-router": "~0.2.13"
}
Run Code Online (Sandbox Code Playgroud)
// gulpfile.js
var gulp = require('gulp'),
wiredep = require('wiredep').stream;
gulp.task('default', function() {
gulp.start('bower-dependencies')
});
gulp.task('bower-dependencies', function () {
gulp.src('./build/index.html')
.pipe(wiredep({
directory: './build/bower_components',
bowerJson: require('./bower.json'),
}))
.pipe(gulp.dest('./build/'));
});
Run Code Online (Sandbox Code Playgroud)
//index.html
<!-- bower:js -->
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<!-- endbower -->
Run Code Online (Sandbox Code Playgroud)
//package.json
"devDependencies": {
"gulp": "^3.8.11" …Run Code Online (Sandbox Code Playgroud) 我有一个函数,在$('.message-input')上设置一个监听器
function addEasterEgg(room){
$('.message-input').on('focus', function(event) {
event.preventDefault();
console.log('room', room)
if (room.length === 1) {
displayStatus("No-one's there!!")
};
});
}
Run Code Online (Sandbox Code Playgroud)
它在事件roomStatus上被调用.
socket.on('roomStatus', function(room){
addEasterEgg(room);
});
Run Code Online (Sandbox Code Playgroud)
每次有人加入房间时都会触发roomStatus事件.因此,如果房间首先有一个人,它被触发并且房间= ["Zf17x3UsNUdgMJ3UAAAD"]然后当另一个人加入时,它再次被触发并且房间= ["Zf17x3UsNUdgMJ3UAAAD","ksxzbQhe0GuZqhMyAAAE"]
所以在'焦点'事件中,我得到两个console.logs(每个房间值一个),而room.length总是等于1,即使它已经变为2
我相信这是因为我的方法被调用两次意味着添加了两个监听器.如果这是正确的,当下一次调用roomStatus并调用addEasterEgg时,我应该如何管理删除前一个侦听器?
谢谢