如何在CoffeeScript中创建一个命名函数表达式,如下例所示?
var a = function b (param1) {}
Run Code Online (Sandbox Code Playgroud)
要么
return function link (scope) {}
Run Code Online (Sandbox Code Playgroud) 所以,我需要一个验证器来检查以确保我的password_confirmation字段与我的password字段匹配.我最终得到了以下指令:
指示
@app.directive 'matches', ->
require: 'ngModel', #Needed for validation bits
scope: { matched_value: '=matches' } #Looks up the value of the scope element we're matching against and keeps it bound
link: (scope, elem, attrs, ctrl) ->
ctrl.$parsers.unshift (view_value) -> #Add a new parser that updates the validity
ctrl.$setValidity(elem.attr('name'), view_value == scope.matched_value)
Run Code Online (Sandbox Code Playgroud)
形成
<form name="form">
<input ng-model="new_user.password" name="password">
<input ng-model="password_confirmation" name="password_confirmation" matches="new_user.password">
</form>
Run Code Online (Sandbox Code Playgroud)
当用户从上到下使用表单时,这很好用.然而,如果他们继续改变password之后他们已经填补了password_confirmation它,那么它就不会像它应该的那样变得无效.
我的第一个stab看起来添加了一个$watcher指令,但我似乎无法获得新password_confirmation输入的正确值.
带观察者的指令(CoffeeScript)
@app.directive 'matches', …Run Code Online (Sandbox Code Playgroud) 从最新版本的ReactJS开始,我们发出警告,要求为动态子项添加键.我遇到了一些问题,发现哪个组件产生了这个警告...我首先假设只有在"for循环"中动态生成的子项才会抛出此警告(因为它是"动态生成的").最后,我发现我们应用程序的每个组件都会抛出此错误,因为我们到处都有子项(即使我们没有"for循环"):(
我们正在使用CoffeeScript,我问自己是否正在以正确的方式使用ReactJS:
DOM = React.DOM
myComponent = React.createClass
render: ->
DOM.div {className: "app", ref: "app"},
DOM.div {className: "child1"}, "This is a test" # throw warning
DOM.div {className: "child2", key: "child2"}, "Hello" # don't throw warning
Run Code Online (Sandbox Code Playgroud)
这里child1除非我们添加一个是扔一个警告关键属性.这种行为是否正常?我们做错了吗?我的意思是我们需要为500多个组件/子项添加密钥,这是一项艰苦而乏味的工作......
此外,警告说"undefined"函数正在抛出它.所以我需要每次挖掘大约10分钟到1小时来检查纠正的地方...... :(
最好的问候,Kursion
我目前正在尝试与SailsJS框架一起进入NodeJS.我想在服务器端使用藏汉CoffeeScript的,但将所有文件后config/*.js,以config/*.coffee正确地js2coffee,我在尝试启动应用程序时出现以下错误:
配置/ 400.coffee
SyntaxError: Unexpected token ILLEGAL
Run Code Online (Sandbox Code Playgroud)
指向文件中的第一个字符,这是咖啡评论的标签.因此,似乎该应用程序不会将该文件识别为coffeescript,而是搜索标准js.
我尝试安装包coffee-script并要求它
app.js
require('coffee-script');
require('sails').lift(require('optimist').argv);
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
如果我删除400.coffee,则错误出现在下一个文件中403.coffee.
我究竟做错了什么?配置文件中是不允许使用coffeescript还是我遗漏了什么?
我编写了以下代码,旨在将字符串连接到一个URL.
_ = require 'underscore'
exports.joinUrl = (start, rest...) ->
for item in rest
if _.last start is '/'
if _.first item is '/'
start += item[1..]
else
start += item
else
if _.first item is '/'
start += item
else
start += '/' + item
start
Run Code Online (Sandbox Code Playgroud)
当我启动coffeescript repl时,会发生一件非常奇怪的事情:
> _ = require 'underscore'
[snipped]
> {joinUrl} = require './joinurl'
{ joinUrl: [Function] }
> _
{ joinUrl: [Function] }
Run Code Online (Sandbox Code Playgroud)
咦?不知何故导入joinUrl是覆盖变量的定义_.即使(a)coffeescript将上面粘贴的模块包装到一个函数中,因此变量的任何使用_都不应该影响外部范围,并且(b)在该代码中的任何一点我都不做任何赋值_,除了require …
当我在Sublime Text 2中保存coffeescript文件时,它会自动将其编译为javascript并在该目录中创建一个新文件.这是一种不受欢迎的行为.我如何阻止这种情况发生?当我保存在不同的文本编辑器(例如:nano)时,这不会发生.
在我继续之前,我试图在Coffeescript中验证多个语句.
我有一些基本的东西:
if ext != 'jpeg' || ext != 'pdf' || ext != 'jpg'
alert('extension must be jpg, pdf, jpeg')
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?我是咖啡新手并且认为基本的东西应该不难做到.
是否可以选择带插值的元素?我有一个带字符串的var
inputId = "awesomeInput"
Run Code Online (Sandbox Code Playgroud)
我想选择ID为"awesomeInput"的输入.我试着这样做,就像我通常用jquery做的那样
$("#{inputId}")
Run Code Online (Sandbox Code Playgroud)
console.log告诉我已经选择了某些东西,但我试图在这个对象上执行的任何函数都失败了.没有错误,也没有效果.像这样:
$("#{inputId}").show()
Run Code Online (Sandbox Code Playgroud)
如何选择像这样的jquery元素,而不是显示它?
我编写了以下程序,每N毫秒处理一个目录中的所有文件:
fs = require "fs"
Q = require "q"
class FileProcessor
constructor: (options) ->
@dir = options.dir
@delay = options.delay
processFiles: ->
Q.nfcall fs.readdir, @dir
.then (files) -> Q.all files.map (file) -> @processFile file # <-- Error!
.then -> Q.delay @delay
.then -> @processFiles()
.done()
processFile: (file) ->
deferred = Q.defer()
# Does some stuff.
return deferred.promise
fp = new FileProcessor(dir: "photos", delay: 1000)
fp.processFiles()
Run Code Online (Sandbox Code Playgroud)
在第11行,我收到此错误:
TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)
似乎@processFile不在范围内.如何解决这个问题?
我在我的一台服务器上设置并运行了Docker,可以像这样远程连接到它:
docker --tlsverify -H tcp://web2.webcom.dk:4243 images
我想做的是能够通过Node.js连接到它并尝试使用dockerode,这对我来说似乎是最好的选择.
这是我的代码:
Docker = require 'dockerode'
docker = new Docker
host: 'tcp://web2.webcom.dk'
port: 4243
tls: true
tlscacert: '/Users/jacob/.docker/ca.pem'
tlscert: '/Users/jacob/.docker/cert.pem'
tlskey: '/Users/jacob/.docker/key.pem'
tlsverify: true
container = docker.getContainer '826544226fdc'
container.start (err, data) ->
return console.error err if err?
console.log data
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我收到此错误:
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
UPDATE
这适用于本地:
Docker = require 'dockerode'
docker = new Docker
host: '192.168.59.103'
port: 2375
socketPath: …Run Code Online (Sandbox Code Playgroud) coffeescript ×10
javascript ×5
node.js ×3
angularjs ×1
docker ×1
jquery ×1
promise ×1
q ×1
reactjs ×1
sails.js ×1
sublimetext2 ×1
validation ×1