剧本:
app = angular.module('app', [])
app.factory 'MyFactory', ->
val: 'Clark Kent'
app.controller 'MainCtrl', ($scope, MyFactory) ->
MyFactory.val = 'Waldo'
$scope.myFactory = MyFactory
Run Code Online (Sandbox Code Playgroud)
将其放入控制台:
angular.injector(['ng','app']).invoke(function(MyFactory) { console.log(MyFactory); })
Run Code Online (Sandbox Code Playgroud)
... 而不是Waldo,你会得到Clark Kent!!
为什么它不返回相同的对象?
看看plunkr
function getElementsByClassName(className)
{
// get all elements in the document
if (document.all)
{
var allElements = document.all;
}
else
{
var allElements = document.getElementsByTagName("*");
}
var foundElements = [];
for (var i = 0, ii = allElements.length; i < ii; i++)
{
if (allElements[i].className == className)
{
foundElements[foundElements.length] = allElements[i];
}
}
return foundElements;
}
var listItems = document.getElementsByClassName("quirky");
for (var i = 0, ii = listItems.length; i < ii; i++)
{
alert(listItems[i].nodeName);
}
Run Code Online (Sandbox Code Playgroud) 我将使用coffeescript/javascript/jquery,如果字符串包含我的所有子字符串,我需要返回true.
所以,我们可以说我有一系列子串'my','dog','spot'.如果我的字符串'成长,我的宠物狗被命名为现场',我需要返回一个真实的.但如果字符串是'我有一只叫做斑点的狗',我需要返回false.
我想有一种方法可以用正则表达式做到这一点,但似乎无法弄明白?
我正在使用类似以下的函数。我正在使用异步系列来测试异步功能。该系列中的第一个回调工作正常,并且在名为callThisGuy(client,callback)的第二个方法处都中断了
testFunction: () ->
client = @
ASync.series([
(callback) ->
client.createSingleClient(callback)
(callback) ->
client.callThisMethod(client, callback)
(callback) ->
trace "In the next step"
],
(err, results) ->
trace "Test"
)
Run Code Online (Sandbox Code Playgroud)
这是callThisMethod函数
callThisMethod:(client, callback) ->
if(client.status == "new")
callback(null," ")
else
setTimeout ( ->
client.callThisMethod(client, callback)
), 1000
Run Code Online (Sandbox Code Playgroud)
即使状态不是“新”,也永远不会调用setTimeout函数。相反,它跳到下一步。我在没有Mocha的情况下运行了相同的代码,然后超时工作正常。
在摩卡咖啡中,它不起作用。我还检查了setTimeout是否未定义。它已定义。我想知道我是否想念一些东西。
我是framer.js的新手,我正在关注一本名为http://coffeescript-for-framerjs.com/#buy的书.

fruits[1].toUpperCase() 它运作正常
fruits.toUpperCase()
Run Code Online (Sandbox Code Playgroud)
在书中,它的果实不是水果,我试过两个但是得到错误
现在我知道toUpperCase()是一个字符串方法,所以它不适用于Array.但那时书究竟在说什么呢.
我正在尝试拿起一些CoffeeScript,但仍坚持按键排序对象数组.这是我试过的:
sortByKey = (array, key) ->
array.sort( (a,b) -> a[key] < b[key] ? -1 : a[key] > b[key] ? 1 : 0 )
testarr = [{i: 5, b:7}, {i:9, b:15}, {i:-4, b:-99}]
sortByKey(testarr, 'i')
val = el['b'] for el in testarr
alert val
Run Code Online (Sandbox Code Playgroud)
我的警报只显示-99,而我本来期望看到-99,7,15.我做错了什么?
在 Coffeescript 中,当变量名称以“@”符号开头时,这意味着什么?例如,我一直在查看 hubot 源代码,就在我查看的前几行中,我发现
class Brain extends EventEmitter
# Represents somewhat persistent storage for the robot. Extend this.
#
# Returns a new Brain with no external storage.
constructor: (robot) ->
@data =
users: { }
_private: { }
@autoSave = true
robot.on "running", =>
@resetSaveInterval 5
Run Code Online (Sandbox Code Playgroud)
我在其他地方也看到过,但没能猜出它的意思。
咖啡脚本是否懒惰评估?如果是这样,我可以用功能方式编写coffeescript吗?
这两个图像的说明

showUserProfile: (user_data)->
console.log "Routers.AppRouter showUserProfile()", user_data
window.user_profile = user_data
playlists_both_people = user_profile['playlists']
my_profile['playlists'].forEach (pl)-> playlists_both_people.push(pl)
@playlists = new Playlists.Collections.PlaylistsCollection( playlists_both_people )
$("#app").html( new Playlists.Views.User.ShowView(user_data).render().el )
@ok()
Run Code Online (Sandbox Code Playgroud) 在lodash中滚动_.map和_.forEach列表的最佳方法是什么?我不需要返回值,但我只在循环中做一些事情.
在性能方面,这两个功能有什么区别?
a = []
b = []
list = response._source.carico_scarico
if angular.isDefined(list)
_.forEach(list, (cs) ->
if cs.qta >= 0 then a.push cs
if cs.qta < 0 then b.push cs
)
Run Code Online (Sandbox Code Playgroud)
要么
a = []
b = []
list = response._source.carico_scarico
if angular.isDefined(list)
_.map(list, (cs) ->
if cs.qta >= 0 then a.push cs
if cs.qta < 0 then b.push cs
)
Run Code Online (Sandbox Code Playgroud) 我看不出我的代码有什么问题.抛出似乎是一个奇怪的错误.请参阅此处了解"try coffeescript"编译器中的代码.
jQuery ->
$('#swipes').sortable
axis: 'y'
update: ->
$.post( $(this).data('update-url'), $(this).sortable.('serialize') )
Run Code Online (Sandbox Code Playgroud)
错误如下:
Error on line 5: unexpected (
Run Code Online (Sandbox Code Playgroud) 我一直在学习 CoffeeScript,作为学习它的练习,我决定学习 TDD Conway 的 Game of Life。我选择的第一个测试是创建一个 Cell 并查看它是死还是活。为此,我创建了以下咖啡脚本:
class Cell
@isAlive = false
constructor: (isAlive) ->
@isAlive = isAlive
die: ->
@isAlive = false
Run Code Online (Sandbox Code Playgroud)
然后,我使用以下代码创建一个 Jasmine 测试文件(这是故意失败的测试):
Cell = require '../conway'
describe 'conway', ->
alive = Cell.isAlive
cell = null
beforeEach ->
cell = new Cell()
describe '#die', ->
it 'kills cell', ->
expect(cell.isAlive).toBeTruthy()
Run Code Online (Sandbox Code Playgroud)
但是,当我在 Jasmine 中运行测试时,出现以下错误:
cell is not defined
Run Code Online (Sandbox Code Playgroud)
和堆栈跟踪:
1) kills cell
Message:
ReferenceError: cell is not defined
Stacktrace:
ReferenceError: cell is not defined …Run Code Online (Sandbox Code Playgroud) 我想从一个巨大的JSON字符串中获取一段特定的数据.如果发布在这里,整个字符串将超过10页,所以我只是包含一个示例代码段:
{ name: '',
keys:
[ 'statType',
'count',
'dataVersion',
'value',
'championId',
'futureData' ],
object:
{ statType: 'TOTAL_SESSIONS_PLAYED',
count: { value: 5 },
dataVersion: 0,
value: { value: 5 },
championId: { value: 31 },
futureData: null },
encoding: 0 }
Run Code Online (Sandbox Code Playgroud)
我如何使用CoffeeScript:
TOTAL_SESSIONS_PLAYED,value字段)中取出数值,然后我几乎是一个超级noob程序员.基本上,在这个例子中,我怎么能从5标记的对象中获取该值TOTAL_SESSIONS_PLAYED,并使用CoffeeScript将其附加到文本文件中?
coffeescript ×13
javascript ×7
angularjs ×2
asynchronous ×1
backbone.js ×1
framerjs ×1
jasmine ×1
jquery ×1
json ×1
lodash ×1
mocha.js ×1
node.js ×1
regex ×1
singleton ×1