неожиданный 2-й аргумент для функции в шаблонах javascript для усов

Я замечаю, что при использовании лямбда-выражений:

{
  "name": "Willy",
  "wrapped": function() {
    return function(text) {
      return "<b>" + render(text) + "</b>"
    }
  }
}

передается второй аргумент (в дополнение к text). Этот второй аргумент является функцией:

function (template) {
    return render(template, scope);
}

который возвращает html с учетом шаблона (с начальным входным объектом json).

Итак, если бы у меня была лямбда следующим образом:

"wrapped": function() {
  return function(text, func) {
    ....
}

можно было бы ожидать, что func("<div>{{name}}</div>") вернет html, представляющий div с содержимым, заполненным тем, что было в свойстве 'name' объекта данных json.

ОДНАКО, func("{{.}}") НЕ работает. Я бы ожидал, что объект представляет исходный объект ввода.

Вместо этого я получаю STRING "[object Object]". Когда я пытаюсь использовать JSON.parse, это дает мне ошибку «Неожиданный токен o».


person rustybeanstalk    schedule 12.05.2012    source источник


Ответы (1)


Код, который вы пытаетесь проанализировать как JSON, на самом деле не является JSON. Это просто литерал объекта JavaScript. Поэтому, когда вы пытаетесь поместить {{.}} в свой шаблон, вы правильно получаете [object Object], потому что это строковое представление объекта.

person Jeremy    schedule 12.05.2012
comment
Есть ли способ получить доступ к объекту из лямбда-функции? - person rustybeanstalk; 13.05.2012
comment
Вашему примеру немного сложно следовать, но кажется, что рендеринг его как части шаблона усов - неправильный поступок. Что вы пытаетесь сделать с этим в своем шаблоне усов? - person Jeremy; 13.05.2012
comment
Я использую шаблон для создания кода html (например, таблицы) или моего сайта с использованием массива объектов. Я хотел бы назначить каждый объект каждому элементу строки таблицы, используя метод Jquery .data(). - person rustybeanstalk; 13.05.2012
comment
Тогда разве вам не следует использовать {{#key-for-object}} вещи {{/key-for-object}}? Я не уверен, что вы можете передать объект в шаблон усов и по-прежнему использовать его как объект, кроме как с оператором блока. - person Jeremy; 14.05.2012
comment
Спасибо, да. Я закончу тем, что использую ключ, как вы предложили. Спасибо. - person rustybeanstalk; 14.05.2012