将CoffeeScript代码转换为LiveScript?

时间:2012-07-22 02:03:46

标签: coffeescript livescript

我有这个有效的CoffeeScript并希望将其转换为LiveScript。有人可以解释为什么它无法转换?还要转换一个?

TodoCtrl = (scope) ->
  scope.addTodo = ->
    scope.todos.push
      text: scope.todoText
      done: false
    scope.todoText = ''

您可以使用它来编译CoffeeScript。

http://coffeescript.org/

您可以使用它来编译LiveScript。

http://gkz.github.com/LiveScript/

1 个答案:

答案 0 :(得分:5)

您正在针对以隐式对象开头的隐式块调用函数scope.todos.push。您必须在LiveScript中使用do,因为它不会执行此特殊情况(只需将do视为块周围的括号)。请参阅https://github.com/gkz/LiveScript/issues/50了解原因。

您想要的代码:

TodoCtrl = (scope) ->
  scope.addTodo = ->
    scope.todos.push do
      text: scope.todoText
      done: false
    scope.todoText = ''

相当于(即do只是括号)

TodoCtrl = (scope) ->
  scope.addTodo = ->
    scope.todos.push(
      text: scope.todoText
      done: false
    )
    scope.todoText = ''

很高兴看到您使用LiveScript!