标签: coffeescript

正确缩进COFFEE SCRIPT?

我在第371行收到错误,这是下面的最后一行 - 基本上,我想在你点击链接REQUEST ADMIN PRIVILEGES时覆盖弹出窗口http://www.albumpl.us/gallery/trial/photos

extraTestButtons.append('<a href="mailto:adminplease@albumpl.us">Request Admin Privileges</a> |  | <a href="#">Turn SMART BROWSE (ON)</a> | ' + 
                ' | <a href="#">Purchase prints and other merchandise</a>|| <a href="http://www.albumpl.us/gallery/#{gal_code}/live">Live View</a>')


            extraTestButtons.find('a').click ->
            if $(this).text() == 'Request Admin Privileges'
              return false
            showNotYetAvailableMessage($(this).text())
Run Code Online (Sandbox Code Playgroud)

coffeescript

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

我可以在不深度嵌套代码的情况下执行许多异步数据库请求吗?

我是异步编程的新手.我遇到了需要在循环中执行8次数据库查找的情况.我不知道如何实现这一点 - 我的数据库库在回调函数中返回数据,在我有所有8行之前我无法继续使用我的代码,因此我需要暂停直到所有8次查找完成.

这就是我现在所描绘的:

db.world.Queue.find(@user.kingdom.troops_queue).on 'success', (troops_queue) ->
    db.world.Queue.find(@user.kingdom.tanks_queue).on 'success', (tanks_queue) ->
        #etc etc
Run Code Online (Sandbox Code Playgroud)

当然这很可怕而且很糟糕,但是我想不出一种方法可以将它汇总到一个循环中,这个循环将允许我的代码暂停并且只在最后一个项目被填充时才继续.我正在研究像jQuery的.each()函数这样的东西,但该函数的行为是什么?它之后的代码会立即继续,还是等待循环完成?

asynchronous node.js coffeescript

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

用于循环重构的coffeescript

我对coffeescript很新,我想知道是否有更多有经验的用户可以建议对以下代码进行重构:

splitCollection: =>
  maxLength = Math.ceil(@collection.length / 3)

  sets = Math.ceil(@collection.length / maxLength)
  start = 0    

  for x in [1..sets]   
    if x != sets
      @render new BusinessUnits(@collection.models.slice(start, (maxLength + start)))
    else
      @render new BusinessUnits(@collection.models.slice(start, (@collection.length)))
    start+= maxLength
Run Code Online (Sandbox Code Playgroud)

在coffeescript中似乎没有一个while循环似乎表明一个更好的机制.

任何建议赞赏.

coffeescript

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

构建Coffeescript并使用@关键字

这可能是非常基本的东西,但我卡住了,有点无能为力.

我最近在CoffeeScript中写了一个Snake游戏,但我对构建代码的方式并不满意.

我正在尝试使用类重写它.我有一个Game类,一个Snake类,一个Food类.我这样做是有意义的.但是,要访问变量和函数,我使用'@'(this)关键字,我觉得我完全过度了.例如,我在Game类的顶部有一个常量列表.我必须声明所有这些@CONSTANT都能够访问它们.或者,在方法内:

clearCanvas: ->
    @ctx.clearRect 0, 0, @canvas.width, @canvas.height
Run Code Online (Sandbox Code Playgroud)

方法调用也是如此.例如:

init: ->
    window.snake = new Snake()
    @showStartScreen()
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这是否可行,或者我应该如何构建我的代码?我现在可以链接到我正在使用的代码,如果有人愿意为我审查它.(编辑:实际上在这里)

非常感谢.

javascript this project-structuring coffeescript

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

在Rails视图中触发Coffeescript函数

在某些Rails视图中,我们具有javascript函数,这些函数可以异步加载某些数据以填充页面。我们的application.js文件将所有JavaScript加载到asset / javascripts文件夹中。

这是我们的haml视图之一:

:javascript
  $(function() {
    fetch_all_facebook_invitees();
  });
Run Code Online (Sandbox Code Playgroud)

如果我们将fetch_all_facebook_invitees函数定义放在coffeescript文件中,则会在每个页面上加载它,因为它们已包含在应用程序的所有页面中:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

加载页面的JavaScript的最佳做法是什么?仅选择性地这样做而不加载整个树?

haml coffeescript ruby-on-rails-3

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

无法在coffeescript内部渲染coffeescript

我想创建一个可以在加载页面后使用AJAX调用的通用控制器,并根据控制它的控制器更新页面上的不同内容.

目的是允许更好的页面和片段缓存,同时为用户显示自定义元素.

我的框架看起来像这样:

controllers/general_ajax_controller.rb
views/general_ajax/on_page_load.js.coffee
                 ./_update_some_stuff.js.coffee
Run Code Online (Sandbox Code Playgroud)

on_page_load控制器中的操作处理逻辑,确定要加载哪些部分,视图将呈现部分.

在on_page_load.js.coffee视图中我有这个代码(简化):

<%= render "update_some_stuff" %>
Run Code Online (Sandbox Code Playgroud)

哪个应该呈现部分.相反,我得到这个错误:

  ActionView::Template::Error (SyntaxError: Reserved word "function" on line 2):
  app/views/general_ajax/on_page_load.js.coffee:1:in `_app_views_general_ajax_on_page_load_js_coffee___2304196970850216490_70321203283120'
Run Code Online (Sandbox Code Playgroud)

我认为coffeescript是在将它包含在视图中之前编译的(这是咖啡并且不支持编译的js)

如果我将on_page_load视图的扩展名更改为.js.erb然后它可以工作.(奇怪的是,我必须在它运行之前重启我的服务器,你知道为什么吗?)

你认为这是coffeescript中的问题还是不好的做法,因此不受支持?

作为一个侧面讨论,您如何看待我的动态编程方法?

rendering partials coffeescript ruby-on-rails-3.1

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

CoffeeScript变量范围

有没有办法在"文件"范围内声明一个变量(它将被CS关闭),而不是初始化它?一个人为的例子:

init = ->
  counter = 0

inc = ->
  counter += 1
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为你需要声明"计数器".将"counter = 0"添加到顶部将使其工作,但"= 0"是不必要的.(一个更现实的例子会涉及在页面加载时访问DOM的东西 - 没有办法在"文件"范围内正确初始化它.)

coffeescript

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

如何组织通用代码

刚刚开始使用backbone.js,我注意到的一件事是我的许多模型,集合和视图共享一些非常相似的方法.我想重构它们并从提取的位置(/ lib?)调用它们.我去搜索文档和/或示例,并对我发现的很少(特别是没有)感到惊讶.那么,有几个问题:

  • 我是否有理由忽视为什么在公共库中考虑很少的主干方法示例?
  • 共享代码的骨干项目中是否有标准/商定的位置?
  • 任何骨干类和/或常用插件来帮助存储常用方法?

任何想法都赞赏 - 提前感谢.

(编辑)示例添加:

从视图中获取此代码.(不可否认,它太短暂实际上值得重构,但它的简单性使它成为一个简洁的例子)

  destroy: () ->
    @model.destroy()
    @remove()
    return false
Run Code Online (Sandbox Code Playgroud)

假设我想将其重构为:

  destroy: () ->
    restful_destroy_method(this)
Run Code Online (Sandbox Code Playgroud)

然后称之为:

 restful_destroy_method: (view) ->
    view.model.destroy()
    view.remove()
    return false
Run Code Online (Sandbox Code Playgroud)

来自一个公共图书馆.有没有其他人似乎这样做的原因?

javascript coffeescript backbone.js

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

为什么我不能调用这个函数?

这太荒谬了......

我尝试这样做时为什么会出错?

#...codecodecode...

g = generateGuid()

#...codecodecode...

generateGuid = ->
  "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace /[xy]/g, (c) ->
    r = Math.random() * 16 | 0
    v = (if c is "x" then r else (r & 0x3 | 0x8))
    v.toString 16
Run Code Online (Sandbox Code Playgroud)

我想做的就是打电话给私人电话......

coffeescript

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

如何在Coffeescript中提高工作效率?

我想改进我的Coffeescript编码风格.当我在Scala中编程时,我可以在一两个小时内编写一个模块,运行它并且只有一些我可以快速识别和修复的小错误.

在Coffeescript中,我花了大约相同的时间在前面,但我最终得到了大量的小错误,这些错误本来是由静态类型检查器捕获的,我最终必须编译,重新加载浏览器,逐步执行一些代码,添加一些突破点,等等.这是一种令人愤怒的经历,需要更长的时间.

由于缺少接口和许多其他OO功能,抽象和封装功能要困难得多.

是否有设计模式取代OO通常提供的封装/抽象?或者是否有关于如何以更多Coffeescript-y方式思考(或如何使用原型方法解决问题)的入门/指南?

你做了什么来提高Coffeescript(或Javascript - 甚至任何动态类型语言)的工作效率?

javascript coffeescript

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