我正在跟踪这个轨道
https://www.youtube.com/watch?v=ltoPZEzmtJA,但我不使用coffeescript.我正在尝试将coffeescript转换为javascript,但我遇到问题.
CoffeeScript的
jQuery -> new AvatarCropper() class AvatarCropper constructor: -> $('#cropBox').Jcrop aspectRatio: 1 setSelect: [0,600,600] onSelect: @update onChange: @update update: (coords) => $("#crop_x").val coords.x $("#crop_y").val coords.y $("#crop_w").val coords.w $("#crop_h").val coords.h
js.erb文件
$(document).ready(function() { $('.crop-image').on('click',function () { $('#cropBox').Jcrop({ aspectRatio: 1,setSelect: [0,100,100],onSelect: update,onChange: update }) }); update: (function(_this) { return function(coords) { $('.user').val(coords.x); $('.user').val(coords.y); $('.user').val(coords.w); return $('.user').val(coords.h); }; })(this) });
我不明白为什么他决定上课,认为转换整个事情会更复杂.我遇到的麻烦是更新功能.我只是把更新功能的咖啡脚本插入转换器并使用输出.这导致错误说更新未定义.我哪里错了?
另外还有一个问题:他在这里上课是什么意思?
谢谢!
解决方法
您的语法看起来错误…:用于声明带标签的语句.
这是一个正确的方法.声明一个提升的变量并分配一个函数ref.给它
函数名称也可以在表达式的函数中出现,所以它可以直接引用它的名字.
使用var函数变量应该提升,除了赋值.
/* there are varIoUs ways to declare a function */ function update(coords) { var $users = $('.user'); $users.val(coords.x); $users.val(coords.y); $users.val(coords.w); return $users.val(coords.h); }