Coffescript не компилирует действительный источник - PullRequest
0 голосов
/ 08 февраля 2012

Я вызываю эту функцию и получаю сообщение об ошибке: data: { key: node.parent.data.key } saing "Unexpected {".Что-то не так.потому что я не могу найти ошибку.

 $("#discipline-list", @el).dynatree({
        fx: { height: "toggle", 
        duration: 100 },
        initAjax: {
          url: "/disciplines",
          data: { mode: "funnyMode" }
        },
        onLazyRead: (node) ->
            console.log(node);
            node.appendAjax({url: "/disciplines_details",
                data: { key: node.parent.data.key }
            });
        }); 

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Сценарий Coffee не приветствует наличие свойств анонимного объекта в одной строке. Добавление одной новой строки исправляет это ...

 $("#discipline-list", @el).dynatree({
        fx: { height: "toggle", 
        duration: 100 },
        initAjax: {
          url: "/disciplines",
          data: { mode: "funnyMode" }
        },
        onLazyRead: (node) ->
            console.log(node);
            node.appendAjax({
                url: "/disciplines_details",
                data: { key: node.parent.data.key }
            });
        });

РЕДАКТИРОВАТЬ: Как преобразовать JS в кофе сценарий ...

перейдите на http://js2coffee.org/ и вставьте js (исправлено из вашей версии)

$("#discipline-list", this.el).dynatree({
    fx: { height: "toggle", 
    duration: 100 },
    initAjax: {
        url: "/disciplines",
        data: { mode: "funnyMode" }
    },
    onLazyRead: function(node){
        console.log(node);
        node.appendAjax({ url: "/disciplines_details",
            data: { key: node.parent.data.key }
        });
    }
});

В итоге вы получите хорошо сформированный кофейный сценарий ...

$("#discipline-list", @el).dynatree
  fx:
    height: "toggle"
    duration: 100

  initAjax:
    url: "/disciplines"
    data:
      mode: "funnyMode"

  onLazyRead: (node) ->
    console.log node
    node.appendAjax
      url: "/disciplines_details"
      data:
        key: node.parent.data.key
0 голосов
/ 08 февраля 2012

Свойства объекта в одной строке сбивают с толку парсер:

node.appendAjax({url: "/disciplines_details",

Просто переместите url на следующую строку, и она должна работать:

node.appendAjax({
    url: "/disciplines_details",

Тем не менее, вы все еще пишете JavaScript.

Пробел имеет большое значение в coffeescript (то есть вы не можете минимизировать его). Правильный отступ имеет важное значение, и весь этот код неверен. Исправьте отступы, избавьтесь от запятых и точек с запятой:

$("#discipline-list", @el).dynatree({
    fx: {
        height: "toggle"
        duration: 100
    }
    initAjax: {
        url: "/disciplines",
        data: { mode: "funnyMode" }
    }
    onLazyRead: (node) ->
        console.log(node)
        node.appendAjax({
            url: "/disciplines_details"
            data: { key: node.parent.data.key }
        })
})

Затем избавьтесь от скобок и скобок, как в последнем примере @ Billy. Если вам неудобно, попробуйте какое-то время придерживаться простого javascript.

0 голосов
/ 08 февраля 2012

Я не знаю точно, что не так, но более канонический способ написать это будет

node.appendAjax
  url: "/disciplines_details"
  data: 
    key: node.parent.data.key

При таких ошибках компиляции всегда сначала переходите к Попробуйте Coffeescript и посмотрите, как он анализируется. Это позволяет легко и быстро исправить в большинстве случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...