标签: coffeescript

为什么要使用javascript函数包装器(在coffeescript中添加)".call(this)"

当我使用最新的(1.0)咖啡脚本时,一个简单的javascript输出看起来像这样(默认情况下):

(function() {
  var a;
  a = 1;
}).call(this);
Run Code Online (Sandbox Code Playgroud)

是什么.CALL(本)做,哪些是添加它的原因是什么?

javascript coffeescript

31
推荐指数
2
解决办法
6228
查看次数

在Coffeescript中枚举和压缩?

来自Python,我喜欢Coffeescript从Python和Perl借用的许多功能(范围/切片,理解,解构分配).Coffeescript中是否存在模仿Python enumeratezip(itertools.izip)函数的语法糖?

以下是我不太关心的模式:

# an enumerate call would be helpful here
i = 0
for x in arr
  ... use x and i ...
  i++
Run Code Online (Sandbox Code Playgroud)

# a zip would be useful here
n = Math.min(arr1.length,arr2.length)
for i in 0...n
  x = arr1[i]; y = arr2[i]
  ... use x and y ...
Run Code Online (Sandbox Code Playgroud)

list-comprehension coffeescript

31
推荐指数
4
解决办法
5747
查看次数

使用bootstrap-modal作为Backbone.js视图

我试图基于Twitter bootstrap-modal创建一个Backbone.js视图,它通过events视图的属性使用Backbone的自动事件委托.

不幸的是,bootstrap-modal似乎破坏了Backbone的事件委托,因为它在显示模式之前克隆了视图HTML:

that.$element
      .appendTo(document.body)
      .show()
Run Code Online (Sandbox Code Playgroud)

我的看法:

App.Views.ProjectsNav ||= {}

class App.Views.ProjectsNav.NewProjectView extends Backbone.View
  events: {
    'click .save': 'save',
    'shown':       'shown'
  }

  save: (e) ->
    ...
    false

  shown: () ->
    App.Helpers.Forms.setFocus($(@el), true)
    false

  render: () ->
    $(@el).html(ich.nav_edit_project_template(@model.toJSON()))
    @$('.modal').modal({'show': true, 'keyboard': true, 'backdrop': true})
    @
Run Code Online (Sandbox Code Playgroud)

相应的(Mustache)HTML模板:

<div class="modal hide" style="display: none; ">
  <div class="modal-header">
    <a href="#" class="close">×</a>
    <h3>New Project</h3>
  </div>
  <div class="modal-body form-stacked">
    <label for="name">Name</label> <input type="text" name="name" value="{{name}}"/><input type="hidden" name="lock_version" value="{{lock_version}}"/>
  </div>
  <div class="modal-footer">
    <a href="javascript:void(0)" class="save btn …
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript backbone.js twitter-bootstrap

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

Ember:你如何从路由器访问模型?

基于我所读到的内容(如果我弄错了,请纠正我),处理模型应该保存的逻辑以及下一步转换的逻辑应该在路由器中.

如果是这种情况,我遇到了一个问题:我不知道如何从路线访问模型.

这是我的控制器(并且在我按下提交后控制台记录"CREATED"):

App.ScoutsNewController = Ember.ObjectController.extend
  submit: ->
    model = @get('model')
    model.on 'didCreate', ->
      console.log 'CREATED' # I want to  redirect to the index after creation
    model.save()
Run Code Online (Sandbox Code Playgroud)

我应该将这条逻辑移到路线上,对吗?我们试试看:

App.ScoutsNewRoute = Ember.Route.extend
  model: ->
    App.Scout.createRecord()

  events:
    submit: ->
      # Based on what I've read, the right place to put the code you see in the controller is here. How do I get access to the model?
      # I have tried @get('model'), @get('content')
Run Code Online (Sandbox Code Playgroud)

注意:我知道提交事件从视图,控制器,然后最终路由起泡,停在任何一个已定义"提交"的路由.因为我想要路由来处理它,我删除了控制器.我能够console.log在路线中看到任何完成,我只需要能够到达模型实例.

我正在使用 Ember v1.0.0-rc.5-7-g610589a

谢谢!

coffeescript ember.js

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

在coffeescript中命名空间

在coffeescript中是否有对命名空间的内在支持?

足够的命名空间似乎是coffeescript可以真正帮助的东西,虽然我似乎无法找到任何暗示有支持的东西.

coffeescript

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

确定一个数组是否包含JavaScript/CoffeeScript中另一个数组的内容

在JavaScript中,如何测试一个数组是否具有另一个数组的元素?

arr1 = [1, 2, 3, 4, 5]
[8, 1, 10, 2, 3, 4, 5, 9].function_name(arr1) # => true
Run Code Online (Sandbox Code Playgroud)

javascript arrays coffeescript

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

CoffeeScript中的匿名函数语法

我一直在看CoffeeScript,我不明白你将如何编写这样的代码.它如何在语法中处理嵌套的匿名函数?

;(function($) {
          var app = $.sammy(function() {

            this.get('#/', function() {
              $('#main').text('');
            });

            this.get('#/test', function() {
              $('#main').text('Hello World');
            });

          });

          $(function() {
            app.run()
          });
        })(jQuery);
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript

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

CoffeeScript模块的模式

在Github上查看CoffeeScript源代码时,我注意到大多数(如果不是全部)模块定义如下:

(function() {
    ...
}).call(this);
Run Code Online (Sandbox Code Playgroud)

这种模式看起来像是将整个模块包装在匿名函数中并调用自身.

这种方法的优点和缺点是什么?还有其他方法可以实现相同的目标吗?

javascript node.js coffeescript

29
推荐指数
2
解决办法
9662
查看次数

在CoffeeScript中将对象数组映射到键/值对

我有一个元素数组,我想应用一个映射来将它转换为单个对象上的键值对(模仿一个关联数组).

Can destructuring assign中的方法可用于在CoffeeScript中实现投影吗?似乎不适合我,因为它导致一个简单的数组而不是键/值对.

我选择的语言是CoffeeScript或JavaScript.

一个例子:

[{name: 'a', value: 'b', other: 'c'}, {name: 'd', value: 'e', other: 'f'}]
Run Code Online (Sandbox Code Playgroud)

应该被转化为:

{
  a: 'b',
  d: 'e'
}
Run Code Online (Sandbox Code Playgroud)

单线是首选.;-)

javascript jquery coffeescript

29
推荐指数
5
解决办法
7万
查看次数

如何捕获像EADDRINUSE这样的node.js/express服务器错误?

这是我的代码(它是coffeescript并使用颜色,但这不相关)

if !module.parent
    try
        hons_server.listen config.port
        console.log 'Listening to port ' + config.port
    catch err
        console.error "Couldn't start server: #{String(err)}".red
Run Code Online (Sandbox Code Playgroud)

hons_server是一个express.js服务器.我很难理解为什么抛出的错误hons_server.listen()不会被try/catch捕获.当我运行我的服务器两次时,我得到输出:

$ coffee src/server.coffee
Listening to port 9090

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:632:11)
    at Array.0 (net.js:733:26)
    at EventEmitter._tickCallback (node.js:192:40)

我想知道为什么没有捕获抛出的错误,以及我如何/在哪里可以捕获EADDRINUSE错误.

error-handling node.js coffeescript express

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