标签: coffeescript

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

CoffeeScript未定义

在javascript中检查变量是否从未创建过,我们就这么做了

if (typeof MyVariable !== "undefined"){ ... }
Run Code Online (Sandbox Code Playgroud)

我很想知道我是如何在coffeescript中做到的?...我尝试了类似的东西

if (MyVariable?false){ ... }
Run Code Online (Sandbox Code Playgroud)

但是这检查if是否MyVariable是一个函数,如果是这样,将调用MyVariable(false),如果不是,那将调用void(0)或类似的东西.

undefined coffeescript

89
推荐指数
6
解决办法
6万
查看次数

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

检查字符串是空还是空的最简单方法

我有这个代码检查空字符串或空字符串.它正在测试中.

eitherStringEmpty= (email, password) ->
  emailEmpty = not email? or email is ''
  passwordEmpty = not password? or password is ''
  eitherEmpty = emailEmpty || passwordEmpty         

test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
Run Code Online (Sandbox Code Playgroud)

我想知道的是,还有更好的方法not email? or email is ''.我可以通过string.IsNullOrEmpty(arg)一次调用在CoffeeScript中完成相当于C#的操作吗?我总是可以为它定义一个函数(就像我一样),但我想知道是否有一些我缺少的语言.

coffeescript

86
推荐指数
4
解决办法
6万
查看次数

coffeescript中的静态类和方法

我想在coffeescript中编写一个静态帮助器类.这可能吗?

类:

class Box2DUtility

  constructor: () ->

  drawWorld: (world, context) ->
Run Code Online (Sandbox Code Playgroud)

使用:

Box2DUtility.drawWorld(w,c);
Run Code Online (Sandbox Code Playgroud)

coffeescript

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

如何让后退按钮与AngularJS ui-router状态机一起使用?

我已经使用ui-router实现了angularjs单页面应用程序.

最初我使用一个不同的URL来识别每个州,但这是为了不友好的GUID打包网址.

所以我现在将我的网站定义为一个更简单的状态机.状态不是由URL标识的,而是根据需要简单地转换为,如下所示:

定义嵌套状态

angular
.module 'app', ['ui.router']
.config ($stateProvider) ->
    $stateProvider
    .state 'main', 
        templateUrl: 'main.html'
        controller: 'mainCtrl'
        params: ['locationId']

    .state 'folder', 
        templateUrl: 'folder.html'
        parent: 'main'
        controller: 'folderCtrl'
        resolve:
            folder:(apiService) -> apiService.get '#base/folder/#locationId'
Run Code Online (Sandbox Code Playgroud)

过渡到定义的国家

#The ui-sref attrib transitions to the 'folder' state

a(ui-sref="folder({locationId:'{{folder.Id}}'})")
    | {{ folder.Name }}
Run Code Online (Sandbox Code Playgroud)

这个系统工作得很好,我喜欢它干净的语法.但是,由于我没有使用URL,后退按钮不起作用.

如何保持我的整洁的ui-router状态机,但启用后退按钮功能?

javascript coffeescript angularjs angular-ui-router

85
推荐指数
4
解决办法
14万
查看次数

CoffeeScript的私人会员?

有人知道如何在CoffeeScript中创建私有的,非静态的成员吗?目前我正在这样做,它只是使用以下划线开头的公共变量来澄清它不应该在类之外使用:

class Thing extends EventEmitter
  constructor: (@_name) ->

  getName: -> @_name
Run Code Online (Sandbox Code Playgroud)

将变量放在类中使它成为静态成员,但是如何将其设置为非静态?甚至可能没有"花哨"?

oop instance-variables private-members coffeescript

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

React输入defaultValue不会随状态更新

我正在尝试使用react创建一个简单的表单,但是在数据正确绑定到表单的defaultValue时遇到困难.

我正在寻找的行为是这样的:

  1. 当我打开我的页面时,文本输入字段应该填入我的数据库中的AwayMessage文本.那就是"示例文本"
  2. 理想情况下,如果我的数据库中的AwayMessage没有文本,我想在Text输入字段中有一个占位符.

但是,现在,我发现每次刷新页面时Text输入字段都是空白的.(虽然我在输入中键入的内容确实保存并保持不变.)我认为这是因为输入文本字段的html在AwayMessage为空对象时加载,但在farMessage加载时不刷新.此外,我无法为该字段指定默认值.

为清晰起见,我删除了一些代码(即onToggleChange)

    window.Pages ||= {}

    Pages.AwayMessages = React.createClass

      getInitialState: ->
        App.API.fetchAwayMessage (data) =>
        @setState awayMessage:data.away_message
        {awayMessage: {}}

      onTextChange: (event) ->
        console.log "VALUE", event.target.value

      onSubmit: (e) ->
        window.a = @
        e.preventDefault()
        awayMessage = {}
        awayMessage["master_toggle"]=@refs["master_toggle"].getDOMNode().checked
        console.log "value of text", @refs["text"].getDOMNode().value
        awayMessage["text"]=@refs["text"].getDOMNode().value
        @awayMessage(awayMessage)

      awayMessage: (awayMessage)->
        console.log "I'm saving", awayMessage
        App.API.saveAwayMessage awayMessage, (data) =>
          if data.status == 'ok'
            App.modal.closeModal()
            notificationActions.notify("Away Message saved.")
            @setState awayMessage:awayMessage

      render: ->
        console.log "AWAY_MESSAGE", this.state.awayMessage
        awayMessageText = if this.state.awayMessage then this.state.awayMessage.text else "Placeholder Text"
        `<div …
Run Code Online (Sandbox Code Playgroud)

javascript forms 2-way-object-databinding coffeescript reactjs

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

通过Node.js将base64编码的映像上传到Amazon S3

昨天我做了一个深夜编码会话并创建了一个小node.js/JS(实际上是CoffeeScript,但CoffeeScript只是JavaScript,所以我们说JS)应用程序.

目标是什么:

  1. 客户端将canvas canvasuri(png)发送到服务器(通过socket.io)
  2. 服务器将图像上传到亚马逊s3

第1步完成.

服务器现在有一个字符串a la

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt...
Run Code Online (Sandbox Code Playgroud)

我的问题是:我将接下来的步骤"流"/上传到Amazon S3并在那里创建实际图像是什么?

knox https://github.com/LearnBoost/knox似乎是一个很棒的库,可以将东西输入S3,但我缺少的是base64-encoded-image-string和实际上传动作之间的粘合剂

任何想法,指示和反馈欢迎.

javascript amazon-s3 node.js coffeescript

82
推荐指数
4
解决办法
6万
查看次数

CoffeeScript中的函数声明

我注意到在CoffeeScript中,如果我使用以下方法定义函数:

a = (c) -> c=1
Run Code Online (Sandbox Code Playgroud)

我只能得到函数表达式:

var a;
a = function(c) {
    return c = 1;
};
Run Code Online (Sandbox Code Playgroud)

但是,我个人经常使用函数声明,例如:

function a(c) {
    return c = 1;
}
Run Code Online (Sandbox Code Playgroud)

我确实使用了第一种形式,但我想知道CoffeeScript中是否有一种生成函数声明的方法.如果没有这种方式,我想知道为什么CoffeeScript会避免这样做.我不认为JSLint会声明声明的错误,只要函数声明在作用域的顶部.

javascript jslint function-declaration coffeescript

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