小编jav*_*ttt的帖子

如何使用onclick与函数表达式而不是声明的函数?

我有一个按钮

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)

这样它可以用于函数表达式吗?

谢谢

javascript onclick

8
推荐指数
1
解决办法
966
查看次数

如何使用mongoose操作从mongo db返回的数据

我使用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)

javascript mongoose mongodb node.js express

5
推荐指数
1
解决办法
2207
查看次数

使用gulp和wiredep,socket.io没有添加到index.html(即使它在bower.json中)

我的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)

html javascript socket.io gulp wiredep

4
推荐指数
1
解决办法
2190
查看次数

如何防止使用jquery和socket.io添加多个事件侦听器

我有一个函数,在$('.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时,我应该如何管理删除前一个侦听器?

谢谢

javascript jquery socket.io

1
推荐指数
1
解决办法
1867
查看次数

标签 统计

javascript ×4

socket.io ×2

express ×1

gulp ×1

html ×1

jquery ×1

mongodb ×1

mongoose ×1

node.js ×1

onclick ×1

wiredep ×1