小编Tre*_*ham的帖子

如何清空Backbone.js集合

我惊讶地发现这不起作用:

coll = new Backbone.Collection
for i in [1..1000]
  coll.add new Backbone.Model()

console.log coll.length # 1000
coll.remove coll.models
console.log coll.length # 500!
Run Code Online (Sandbox Code Playgroud)

我理解为什么这个奇怪的结果或多或少会发生,虽然它对我来说似乎是个错误.在任何情况下,什么是最好的选择,而不采用像_reset(因为我希望remove触发适当的事件)无论如何都不会工作的内部方法?

coffeescript backbone.js

36
推荐指数
1
解决办法
3万
查看次数

Math.min.apply(0,array) - 为什么?

我只是在挖掘一些JavaScript代码(Raphaël.js)并遇到以下行(稍微翻译):

Math.min.apply(0, x)
Run Code Online (Sandbox Code Playgroud)

在哪里x是一个数组.为什么你会这样做?行为似乎是"从数组中取出最小值x".

javascript

32
推荐指数
2
解决办法
2万
查看次数

使用JavaScript来防止后来的`<script>`标记被评估?

这是一个奇怪的用例,但我有我的理由:

我希望能够写作

<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
Run Code Online (Sandbox Code Playgroud)

在我的标记中,并使用代码first.js,防止或延迟执行second.js.这可能在任何浏览器中都可以吗?如果first.js内联的内容怎么办?(如果有帮助,则假设第二个脚本标记具有id属性.)

由于我得到了几个错过我所得到的答案,我应该澄清一下:

  1. 解决方案必须完全在内first.js.任何需要更改页面原始HTML的内容second.js都是不可接受的.
  2. 可以接受的加载second.js通过Ajax以及使用执行它eval.这很容易.困难的部分是阻止立即执行second.js.
  3. 假设你不知道里面有什么second.js.因此,您不能仅second.js使用no-op函数替换每个调用的全局函数.(另外,这几乎肯定会导致错误.)

如果你知道一个解决方案适用于某些浏览器但不适用于其他浏览器,我很乐意听到它.

示例:为了使这更具体,让我们说代码

<script type="text/javascript">
  function func() {
    window.meaningOfLife = 42;
    window.loadSecond();
  };
  setTimeout(func, 10);
</script>
Run Code Online (Sandbox Code Playgroud)

在两个script包含之前,second.js包含该行

if (window.meaningOfLife !== 42) {throw new Error();}
Run Code Online (Sandbox Code Playgroud)

first.js应该能够通过延迟second.js执行直到window.loadSecond运行来防止此错误.(假设执行的window.loadSecond也是first.js.)它是不是不准碰window.meaningOfLife …

html javascript javascript-events

28
推荐指数
4
解决办法
2万
查看次数

为什么console.log(缓冲区)给我一个十六进制列表?

这是我的CoffeeScript:

buffer = new Buffer 100
buffer[i] = i for i in [0..99]
console.log buffer
Run Code Online (Sandbox Code Playgroud)

编译成

  var buffer, i;
  buffer = new Buffer(100);
  for (i = 0; i < buffer.length; i++) {
    buffer[i] = i;
  }
  console.log(buffer);
Run Code Online (Sandbox Code Playgroud)

当我用节点运行它时,我得到以下输出:

$ coffee exercise1
<Buffer 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 …
Run Code Online (Sandbox Code Playgroud)

node.js coffeescript

27
推荐指数
1
解决办法
2万
查看次数

按名称获取Meteor集合

假设我写道:

new Meteor.Collection("foos");
new Meteor.Collection("bars");
Run Code Online (Sandbox Code Playgroud)

是否有用于按名称访问这些集合的API?喜欢的东西Meteor.Collection.get(name),在这里name"foos"还是"bars"?我知道我可以写类似的东西

var MyCollections = {
    foos: new Meteor.Collection("foos");
    bars: new Meteor.Collection("bars");
}
Run Code Online (Sandbox Code Playgroud)

然后使用MyCollections[name],但我更愿意使用现有的API(如果存在).

meteor

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

在Node.js中解除绑定事件

我们stdin.on以此为例.回调stdin.on堆栈,所以如果我写(在CoffeeScript中)

stdin = process.openStdin()
stdin.setEncoding 'utf8'
stdin.on 'data', (input) -> console.log 'One'
stdin.on 'data', (input) -> console.log 'Two'
Run Code Online (Sandbox Code Playgroud)

然后,每当我在提示符处返回时,我都会得到

One
Two
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法在绑定后删除/替换回调?或者是自己绑定代理回调和管理状态的唯一方法?

javascript-events node.js coffeescript

23
推荐指数
2
解决办法
1万
查看次数

从Git中的"已更改但未更新"中删除所有已删除的文件

当我跑步时git status,我有一堆形式的线条

deleted:    dir/file.js
Run Code Online (Sandbox Code Playgroud)

我可以单独删除每一个git checkout -- dir/file.js,但必须有一个不那么费力的方法.(是的,我知道我应该git rm首先使用......)

[ 更新:正如Mark在下面指出的那样,git checkout --实际上还原了一个已删除的文件,而我认为它从git索引中删除了它.我有点困惑,因为当你跑步时git status,它说:

use "git checkout -- <file>..." to discard changes in working directory
Run Code Online (Sandbox Code Playgroud)

对我来说,"丢弃更改"并不意味着"恢复您删除的文件",但在git术语中我认为这是有道理的.]

git

22
推荐指数
2
解决办法
8774
查看次数

斜体显示包含链接的文本

我有一个RST,我想要一个斜体链接.但是,标记

*Warning: `Watch this <http://www.youtube.com/watch?v=dQw4w9WgXcQ&ob=av3e>`_!*
Run Code Online (Sandbox Code Playgroud)

以HTML格式呈现

<em>Warning: `Watch this <http://www.youtube.com/watch?v=dQw4w9WgXcQ&ob=av3e>`_!</em>
Run Code Online (Sandbox Code Playgroud)

也就是说,斜体渲染,但链接没有.如何在链接周围添加斜体?

restructuredtext

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

CoffeeScript封装和变量访问

试图理解CoffeeScript实例和类变量是如何工作的我带来了这段代码(结果在评论中).

class A
  x: 1
  @y: 2

  constructor: (@z) -> 
    #console.log "const x", x #ReferenceError: x is not defined
    console.log "constructor y", @y #undefined
    console.log "constructor z", @z # = 3 for A and 6 for B

  get: () -> 
    #console.log "get x", x #ReferenceError: x is not defined
    console.log "get y", @y #undefined
    console.log "get z", @z # = 3 for A and 6 for B

  get2: () => 
    #console.log "get2 x", x #ReferenceError: x is not defined
    console.log …
Run Code Online (Sandbox Code Playgroud)

coffeescript

14
推荐指数
2
解决办法
5489
查看次数

如何根据集合的大小创建模板条件?

我想做这样的事情:

<template name="list">
  <ul>
  {{#if items}}
      {{#each items}}
        <li>{{itemContents}}</li>
      {{/each}}
  {{else}}
    <li class="placeholder">There are no items in this list.</li>
  {{/if}}
  <ul>
</template>
Run Code Online (Sandbox Code Playgroud)

itemsMeteor.cursor 在哪里:

Template.list.items = function() {
  return Items.find();
};
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码不起作用,因为条件将积极评估,即使没有项目(由于Handlebars评估[]为falsey ,这是有点令人惊讶的).我尝试将条件改为

{{#if items.count}}
Run Code Online (Sandbox Code Playgroud)

但后来我得到了神秘的错误

Unknown helper 'items'
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法在流星Handlebars模板中写出这样的条件?

handlebars.js meteor

14
推荐指数
3
解决办法
2万
查看次数