我正在尝试测试是否String.toUpperCase使用Jasmine调用该方法.然而,无论何时我尝试它只是返回
toUpperCase()方法不存在
这是我的Jasmine测试:
spyOn(String,"toUpperCase")
$(@makeup.el).trigger(@e)
expect(String.toUpperCase).toHaveBeenCalled()
Run Code Online (Sandbox Code Playgroud)
有关如何测试是否被调用的任何想法?它似乎String是window对象的私有类,所以我实际上可能无法测试它.请帮忙.
我正在使用coffeescript.我在网上看到,当使用coffeescript和Meteor时,应该使用@来定义全局变量,例如集合.我已经这样做但我仍然收到以下错误.错误后会显示相关文件中的代码.我该如何解决这个错误?
谢谢.
错误--------
ReferenceError: GameStatus is not defined
at app/server/methods/adminMethods.coffee.js:10:5
Run Code Online (Sandbox Code Playgroud)
---------------------------------- collections/gamestatus.coffee ----------- -----------------------
@GameStatus = new Meteor.Collection('gamestatus')
Run Code Online (Sandbox Code Playgroud)
---------------------------------- server/adminMethods.coffee ----------- -----------------------
Meteor.methods
initializeGameStatus: () ->
GameStatus.insert({gameOnOff: 0, asymmetric: 0})
if GameStatus.find({}).count() is 0
Meteor.call 'initializeGameStatus', (err, result) ->
if err
console.log(err)
else
'GameStatus collection initialized'
Run Code Online (Sandbox Code Playgroud) 是否可以将'index.coffee'文件挂钩作为Yeoman生成器的入口点?
'generator-generator'生成器创建'index.js'文件.用'index.coffee'替换它可以隐藏Yeoman的生成器.
我查看了文档,但没有找到任何提及它.
https://github.com/yeoman/yeoman/wiki/Generators
我找到了一个非常古老的Yeoman分支,似乎已经有了这个计划:
https://github.com/mklabs/yeoman/wiki/generators
目前我已经设置了一个将我的CoffeeScript文件编译成JavaScript的观察器.
我有一个调用函数来获取值的哈希.问题是,函数返回内部函数而不是它应该的值.
(用户定义在此哈希之上)
我的哈希:
userInfo = {
id: user.id,
email: user.email,
cars: getCars(user.id),
}
Run Code Online (Sandbox Code Playgroud)
哪个叫这个功能:
getCars = (userId) ->
id = parseInt(userId)
userRef = new Firebase("https://demo-firebase.firebaseIO.com/users/#{id}/")
userRef.on('value', (snapshot) ->
if snapshot.val() == null
["toyota"]
else
snapshot.val().cars # returns an array of cars
)
Run Code Online (Sandbox Code Playgroud)
当我在调试器中并单步执行该函数时,它返回userRef.on行而不是if/else语句中的正确位置.
这是编译好的JS:
getCars = function(userId) {
var id, userRef;
id = parseInt(userId);
userRef = new Firebase("https://demo-firebase.firebaseIO.com/users/" + id + "/");
return userRef.on('value', function(snapshot) {
if (snapshot.val() === null) {
return ["toyota"];
} else { …Run Code Online (Sandbox Code Playgroud) javascript google-chrome-extension coffeescript google-chrome-devtools firebase
checkbox: (propertyName, {hash}) ->
...
...
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
我熟悉这个概念
class Person
constructor: (name) ->
@name = name
Run Code Online (Sandbox Code Playgroud)
有一个简写
class Person
constructor: (@name) ->
Run Code Online (Sandbox Code Playgroud)
{parameterName}有类似的魔力吗?
所以我正在使用Rickshaw图形库,我想知道如何动态地将点添加到图形中.
我有一个图像实例化如下:
@seriesData = [ [], [], [] ]
random = new Rickshaw.Fixtures.RandomData(150)
for (var i = 0; i < 50; i++) {
random.addData(self.seriesData)
}
@graph = new Rickshaw.Graph(
element: document.getElementById("chart")
width: 550
height: 300
renderer: 'area'
series: [
{
color: "#c05020"
data: self.seriesData[0]
name: 'One'
}, {
color: "#30c020"
data: self.seriesData[1]
name: 'Two'
}, {
color: "#2791d7"
data: self.seriesData[2]
name: 'Three'
}
]
)
@graph.render()
hoverDetail = new Rickshaw.Graph.HoverDetail(
graph: self.graph
)
legend = new Rickshaw.Graph.Legend(
graph: …Run Code Online (Sandbox Code Playgroud) 我正在尝试向使用Crafty的应用添加一个按钮,但是,与其他按钮不同,我希望这个按钮将用户重定向到其他URL.
请注意,没有人教过我如何使用Coffee或JavaScript,所以我真的很新.
我正在尝试使用重定向:
cfg.onClickTeacher = ->
preloadScene(CFG.ASSETS_MAIN, -> "www.my-site/teacher")
Run Code Online (Sandbox Code Playgroud)
但它没有用,所以,我该怎么做?
所以我有这个代码 -
bars.
append('rect')
.attr('x', 0)
.attr('y', (d, i) ->
return yScale(i)
).attr('width', (datum) ->
return xScale(datum.freq)
)
.attr('height', barHeight)
.attr('fill', 'blue')
.attr('class', 'bar')
.on('click', ->
bars.selectAll('rect').attr('fill', '#0000ff')
currentFill = d3.select(this).style('fill')
nextColor = {}
if currentFill == '#0000ff'
nextColor = '#ff0000'
else
nextColor = '#0000ff'
d3.select(this).style('fill', nextColor)
)
Run Code Online (Sandbox Code Playgroud)
但是,bars.selectAll('rect')不会改变矩形的颜色.为什么?
检查是否定义了简单变量是很容易的 myVar?
问题是,CoffeeScript中是否有一种很好的方法来检查是否定义了嵌套属性?
例如
if property.p.p.p.p?
alert "Hello"
Run Code Online (Sandbox Code Playgroud)
抛出ReferenceErrorif property.p.p.p(或property.p.p| property.p)未定义.
这只是我们必须递归检查的东西,还是有一个很好的功能?
所以我有一个关于Coffee Script的愚蠢问题.我给它第二次机会,但为什么它会归还一切?
这是与函数的最后一个语句/行有关吗?以及如何禁用此功能?把评论或其他东西作为最终的"表达",我知道这是一个"记录"的特征,但没有; 不,不是真的,我怎么没有到处都有回报?并节省下载/执行时间?
当然这种行为可以搞砸jit了吗?
(locate =
getPosition: () ->
# Check we support geolocation
throw Exception 'Your browser doesn\'t support location based services!' if !navigator.geolocation
navigator.geolocation.getCurrentPosition (pos) ->
console.log pos
)
Run Code Online (Sandbox Code Playgroud)
编译成
(function() {
var locate;
locate = {
getPosition: function() {
if (!navigator.geolocation) {
throw Exception('Your browser doesn\'t support location based services!');
}
return navigator.geolocation.getCurrentPosition(function(pos) {
return console.log(pos);
});
}
};
}).call(this);
Run Code Online (Sandbox Code Playgroud)
[编辑]
我关心的原因是这只是我构建的应用程序的一个非常大的库之一,如果我们说有500个函数,其中200个对dom执行某些操作而不是返回类似数字或对象的内容,那么额外的200返回是我不想要或不需要的额外1.2k数据.
此外,一个没有返回的函数,返回undefined和一个返回null良好的函数,无需解释.如果我愚蠢到足以检查这一点,那就是全面的错误.
我敢肯定会有一些性能差异,但我不知道这一点,现在我没有时间做一些jsperfs,但我会感兴趣.
