我正在使用Jasmine,我想测试一个对象是否有某种方法,如下所示:
it "should have 'open' method", ->
@xhr = ajax.create()
expect(@xhr).toHaveMethod "open" # I want to test like this!
Run Code Online (Sandbox Code Playgroud)
我怎么测试?谢谢你的好心.
我有时写代码如下:
try doSomething()
catch e
handleError e
Run Code Online (Sandbox Code Playgroud)
这不是什么好看和干净的coffeescript代码应该是什么样子.
有没有办法写:
try doSomething()
catch e handleError e #<-- will not compile
Run Code Online (Sandbox Code Playgroud)
这将在我的try/catch语句中节省大约33%的代码行;)
在Python中
def cross(A, B):
"Cross product of elements in A and elements in B."
return [a+b for a in A for b in B]
Run Code Online (Sandbox Code Playgroud)
如果用两个数组(或字符串)调用它,则返回一维数组.
但在CoffeeScript中
cross = (A, B) -> (a+b for a in A for b in B)
Run Code Online (Sandbox Code Playgroud)
返回一个二维数组.
我的应用程序中有一些视图,它引用了我的application.js文件,其中包含我在整个应用程序中使用的函数.
在使用3.1的边缘版本之后,我刚刚安装了Rails 3.1版本候选版本.直到我安装RC我没有任何问题,但现在我收到此错误:
ReferenceError:找不到变量:indicator_tag
indicator_tag是我在application.js中定义的函数.我在javascript文件中注意到的唯一区别是现在我的所有函数都包含在:
(function() { ... }).call(this);
Run Code Online (Sandbox Code Playgroud)
我理解这是针对变量范围的吗?但它可能阻止我的页面使用这些变量吗?在有人要求之前,我确保我的include标签中的javascript路径是正确的.
我试图用CoffeeScript重新创建这个流行的jQuery lambda闭包:
(function($, window, undefined){
$(document).ready(function(){
...
});
})(jQuery, window);
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这个:
(($, window, undefined) ->
$ ->
alert "js!"
)(jQuery, window)
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
错误:第1行的解析错误:意外的'BOOL'
看起来这undefined就是问题的原因.关于如何解决这个问题的任何想法?
我正在使用带有CoffeeScript的Rails 3.1并遇到了麻烦.如何从位于.js.coffee文件中的.js.erb文件中调用函数?
假设.js.coffee中的函数如下:
myName = -> "Bob"
Run Code Online (Sandbox Code Playgroud)
我想我可以像任何常规的js函数一样调用它,例如:
var theName = myName();
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.有任何想法吗?
或者是否可以在我的.js.erb文件中使用coffeescript来使一切都一样?
以下面的代码为例:
class MyClass
@staticMethod: -> hello_world()
instanceMethod: -> MyClass.staticMethod()
Run Code Online (Sandbox Code Playgroud)
有没有办法从内部引用MyClass instanceMethod而不明确命名它?就像是self.staticMethod()
我正在编写CoffeeScript中的代码,因为我一直在用它编写React.
这是基本结构.
{ div, input } = React.DOM
Outer = React.createClass
render: ->
div { id: 'myApp' },
Inner()
Inner = React.createClass
render: ->
input { id: 'myInput', ref: 'myInput' }
Run Code Online (Sandbox Code Playgroud)
toggle我的外类上有一个方法,可以通过按快捷方式触发.它切换了我的应用程序的可见性.
当我的应用程序从隐藏切换到显示时,我想专注于输入.
现在切换方法看起来或多或少像这样:
Outer = React.createClass
render: ->
......
hide: ->
@setState { visible: no }
show: ->
@setState { visible: yes }
$('#myInput').focus() # jQuery
# I want to do something like
# @refs.myInput.getDOMNode().focus()
# But @refs here is empty, it doesn't contain the refs in Inner …Run Code Online (Sandbox Code Playgroud) 我有一个节点应用程序像其他微服务前面的防火墙/调度程序一样坐着,它使用如下的中间件链:
...
app.use app_lookup
app.use timestamp_validator
app.use request_body
app.use checksum_validator
app.use rateLimiter
app.use whitelist
app.use proxy
...
Run Code Online (Sandbox Code Playgroud)
但是对于特定的GET路由,我想跳过除rateLimiter和proxy之外的所有路由.他们是否可以使用Rails before_filter设置过滤器:除了/:仅?
我正试图使用Lodash去抖动函数,虽然它正在调用函数,但它似乎根本没有去抖动它.我的问题似乎与我在其他地方在SO或Google 上看到的错误一样(通常,他们没有调用_.debounce返回的函数).
我目前的超级简单实现如下(在Angular with CoffeeScript中):
s.search = -> _.debounce( s._makeSearchRequest, 1000 )()
s._makeSearchRequest = -> console.log("making search request")
Run Code Online (Sandbox Code Playgroud)
在JS中,我相信:
s.search = function() { _.debounce( s._makeSearchRequest, 1000 )() }
s._makeSearchRequest = function() { console.log("making search request") }
Run Code Online (Sandbox Code Playgroud)
我s.search()通过在输入框中输入来运行,如果我很快输入乱码,控制台会在每次按键时打印出"发出搜索请求",这样每秒多次 - 表示它根本没有被去抖动.
我有什么想法我做错了吗?
coffeescript ×10
javascript ×6
angularjs ×1
express ×1
jasmine ×1
lodash ×1
middleware ×1
node.js ×1
reactjs ×1
shortcut ×1
syntax ×1
try-catch ×1