CoffeeScript函数问题

时间:2017-02-11 10:44:36

标签: javascript coffeescript

我是coffeescript的新手。我已经在js中编写了代码,现在我想在coffeescript转换它,我已经尝试了很多,我也引用了This。但它不会帮助我。

这是我的代码,

this.$scope.callTestFuntion = function(){
    this.blockingObject.render(function(dataURL){
      console.log('via render');
      console.log(dataURL.length);
    });
  }
  this.$scope.blockingObject.callback=function(dataURL){
    console.log('via function');
    console.log(dataURL.length);
    this.myCroppedImage = dataURL;
  }

  var handleFileSelect=function(evt) {
    console.log('here');
    var file=evt.currentTarget.files[0];
    var reader = new FileReader();
    reader.onload = function (evt) {
        this.$scope.$apply(function($scope){
        this.$scope.myImage=evt.target.result;
      });
    };
    reader.readAsDataURL(file);
  };

我想用coffeescript语法转换它。请帮帮我。

由于

2 个答案:

答案 0 :(得分:1)

以下是您转换的代码:

# CoffeeScript code converted from JavaScript
# from Georgi Naumov
# gonaumov@gmail.com for contacts and suggestions
@.$scope.callTestFuntion = ->
  @.blockingObject.render (dataURL) ->
    console.log 'via render'
    console.log dataURL.length
@.$scope.blockingObject.callback = (dataURL) ->
  console.log 'via function'
  console.log dataURL.length
  @.myCroppedImage = dataURL

handleFileSelect = (evt) ->
  console.log 'here'
  file = evt.currentTarget.files[0]
  reader = new FileReader()
  reader.onload = (evt) ->
    @.$scope.$apply ($scope) ->
      @.$scope.myImage = evt.target.result
  reader.readAsDataURL file

这是编译后产生的JavaScript:

// Generated by CoffeeScript 1.12.3
(function() {
  var handleFileSelect;

  this.$scope.callTestFuntion = function() {
    return this.blockingObject.render(function(dataURL) {
      console.log('via render');
      return console.log(dataURL.length);
    });
  };

  this.$scope.blockingObject.callback = function(dataURL) {
    console.log('via function');
    console.log(dataURL.length);
    return this.myCroppedImage = dataURL;
  };

  handleFileSelect = function(evt) {
    var file, reader;
    console.log('here');
    file = evt.currentTarget.files[0];
    reader = new FileReader();
    reader.onload = function(evt) {
      return this.$scope.$apply(function($scope) {
        return this.$scope.myImage = evt.target.result;
      });
    };
    return reader.readAsDataURL(file);
  };

}).call(this);

答案 1 :(得分:1)

如果您只想转换代码,请使用http://js2.coffee

@$scope.callTestFuntion = ->
  @blockingObject.render (dataURL) ->
    console.log 'via render'
    console.log dataURL.length
    return
  return

@$scope.blockingObject.callback = (dataURL) ->
  console.log 'via function'
  console.log dataURL.length
  @myCroppedImage = dataURL
  return

handleFileSelect = (evt) ->
  console.log 'here'
  file = evt.currentTarget.files[0]
  reader = new FileReader

  reader.onload = (evt) ->
    @$scope.$apply ($scope) ->
      @$scope.myImage = evt.target.result
      return
    return

  reader.readAsDataURL file
  return

# ---
# generated by js2coffee 2.2.0