标签: coffeescript

具有自定义方法的Node.js array.sort导致RangeError:超出最大调用堆栈大小

所以,我有一个包含100,000多个项目的数组,这一行导致它吹掉了调用堆栈:

@sortedList.sort (a, b) ->
  return if a.value > b.value then -1 else 1
Run Code Online (Sandbox Code Playgroud)

我即将实施一些自定义类型(建议,任何人?)来解决这个问题,但我只是想确保我没有做一些明显愚蠢的事情导致它爆炸.

sorting node.js coffeescript

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

骨干视图将模板分配给el

是否可以将@template()分配给@el,如下所示:

someview.js.coffee

class SomeView extends Backbone.View
  template: JST["app/templates/sometemplate"]

  events:
    'click' : 'onClick'

  initialize: ->

  render: ->
    @el = @template()

  onClick: ->
    #do something
Run Code Online (Sandbox Code Playgroud)

index.js.coffee

class IndexView extends Backbone.View
  initialize: ->
    @collection.on('reset', @render, this)

  render: ->
    $(@el).html('')
    for m in @collection.models
      view = new App.Views.SomeView(model: m)
      $(@el).append(view.render().el)
Run Code Online (Sandbox Code Playgroud)

sometemplate.jst.hamlc

.someview_template
  .stuff_inside
Run Code Online (Sandbox Code Playgroud)

我所处的情况,SomeView类被div包裹,它让我失去了我想直接在'.someview_template'元素上分配的点击事件.我能想到解决这个问题的方法是重新设置@el = @template()......是可能的还是正确的方法呢?

是这样的情况,Backbone.View的@el应该始终是包含div,模板应该只是该div中包含的元素?如果将@el自动设置为@template()中找到的根节点,它似乎会更基本.我应该让sometemplate.jst.hamlc只包含".stuff_inside",然后在SomeView中设置$(@ el).addClass('someview_template'),这样我可以确定事件是否分配给该元素?

谢谢!

javascript coffeescript backbone.js

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

backbone.js如何与CoffeeScript一起使用?

使用CoffeeScript编写backbone.js应用程序是否存在任何固有问题?您是否遇到了一些无法解决的问题或者必须使用一些特别笨重的解决方法?

integration coffeescript backbone.js

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

Qtip2工具提示未定位

我运行此代码 -

 $(".imgClass").each( (elem,value)->
      imgSrc = $(value).attr("src")
      $(value).qtip({
        content: "<img src=" + imgSrc + ">"
        position:{
            corner:{
              target:'leftTop',
              tooltip:'bottomRight'
            }

        }


        })
      )
Run Code Online (Sandbox Code Playgroud)

img显示正常,但工具提示始终位于目标的右下角,与leftTop相反.

我认为这可能是语法错误 - 任何人都可以帮忙吗?(另外,这是用coffeescript写的,因此没有; s,但是我保留了parantheses因为我还不清楚咖啡)

谢谢

javascript jquery coffeescript qtip2

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

AJAX调用是由服务器处理但不会呈现?

在我的rails 3应用程序中,我有一个页面需要定期检查服务器以获取更新信息,然后相应地更新无序列表.按照Rails 3等效的periodic_call_remote显示的示例,我转换为适当的CoffeeScript并创建必要的.js.erb部分.

页面调用服务器,服务器使用正确的js文件进行响应,但页面上没有任何内容可以修改.alert('foo');工作正常,但任何顺序.html().replaceWith()不会.

这是我的CoffeeScript:

$(document).ready ->
    setInterval () ->
        $.ajax url: "programs", type: "GET", dataType: "script"
    , 10000
Run Code Online (Sandbox Code Playgroud)

和相应的.js.erb:

$("#programlist").html("<%= escape_javascript(render @programs) %>");
Run Code Online (Sandbox Code Playgroud)

这里有问题吗?

ajax jquery ruby-on-rails coffeescript

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

在呈现Backbone View时收到通知

我正在研究一个Backbone.View应该将集合呈现为可滚动列表的集合.

作为初始渲染的一部分,我需要访问一些布局属性(例如clientWidth),这些属性仅在渲染视图后才可用.

我的问题是,我如何知道何时将视图添加到DOM?


使用a Backbone.View通常有两种方法将视图附加到DOM:

  1. 创建视图>渲染>附加它:

    view = new MyList().render()
    $('#dummy').append(view.$el)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建视图并就地呈现它:

    new MyList({el: '#dummy'}).render()
    
    Run Code Online (Sandbox Code Playgroud)

注意:我知道(1)和(2)不是完全等价的,这不是重点.


让我们考虑我的列表定义如下:

class MyList extends Backbone.View
    render: ->
        @$el->html( ... )
        @

    layout: ->
        max = $el.scrollWidth - $el.clientWidth
        # ... disable / enable scrolling arrows based on max ...
Run Code Online (Sandbox Code Playgroud)

在MyList附加到DOM之后,您如何确保调用layout()?

javascript coffeescript backbone.js backbone-views

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

使用grunt编译coffeescript - > RangeError:超出最大调用堆栈大小

我尝试使用grunt-contrib-coffee插件使用grunt编译我的coffeescript文件.但是跑步grunt coffee,我总是得到这个错误:

RangeError: Maximum call stack size exceeded
Run Code Online (Sandbox Code Playgroud)

这是我的grunt.js文件:

/*global module:false*/
module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    meta: {
      version: '0.1.0',
      banner: '/*! PROJECT_NAME - v<%= meta.version %> - ' +
        '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
        '* http://PROJECT_WEBSITE/\n' +
        '* Copyright (c) <%= grunt.template.today("yyyy") %> ' +
        'YOUR_NAME; Licensed MIT */'
    },
    lint: {
      files: ['grunt.js', 'lib/**/*.js', 'test/**/*.js']
    },
    qunit: {
      files: ['test/**/*.html']
    },
    concat: {
      dist: {
        src: ['<banner:meta.banner>', '<file_strip_banner:lib/FILE_NAME.js>'],
        dest: 'dist/FILE_NAME.js' …
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript gruntjs

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

将数字与数字作为字符串进行比较

我试图找出为什么我的CoffeeScript代码不起作用:

HTML:

<a data-id="5">Click me</a>
Run Code Online (Sandbox Code Playgroud)

CoffeeScript的:

id = $('a').attr('data-id')
console.log id == 5
Run Code Online (Sandbox Code Playgroud)

问题是返回的数字attr('data-id')是一个字符串,并将其与实际数字进行比较,无法进行比较.我应该做些什么,以便我可以轻松地比较数字.

javascript coffeescript

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

类coffeescript的方法

我是coffeescript的新手,也是javascript中的对象.我在coffeescript中有这段代码:

class Animal
constructor: (name) ->
    @name = name
    @upperName: ->
        @name.toUpperCase()
    @greetings ->
        console.log 'Hello %s', @name

this.type = 'Animal'
Run Code Online (Sandbox Code Playgroud)

这是"编译"到这个JavaScript:

var Animal
Animal = (function() {
function Animal(name) {
  this.name = name;
  ({
    this.upperName: function() {
      return this.name.toUpperCase();
    }
  });
  this.greetings(function() {
    return console.log('Hello %s', this.name);
  });
}
Animal.type = 'Animal';
return Animal;
})();
Run Code Online (Sandbox Code Playgroud)

方法问候upperName有什么区别???
" : "在课堂上做什么?

谢谢

javascript coffeescript

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

如何将Javascript项目移植到Coffeescript

如果我想将现有项目从Javascript移植到Coffeescript(在我的情况下,在Rails应用程序中),我是否需要转换现有的Javascript文件?我担心转换真正的大型和CDN托管文件,如jQuery和jQueryUI.我该如何解决这个问题?

javascript ruby ruby-on-rails coffeescript ruby-on-rails-3

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