Передача параметров в шаблоне пробелов приводит к ошибке «Первый аргумент должен быть функцией»

#meteor-blaze #spacebars

#meteor-blaze #пробелы

Вопрос:

Я пытаюсь следовать лекциям по EventedMind.com веб-сайт и в видео «Предварительный просмотр пользовательского интерфейса Shark: рендеринг с тегом включения» я получаю эту ошибку:

Первый аргумент должен быть функцией, вызываемой для остальных аргументов; найдена СТРОКА

в строке asterisk ниже в моем code.html досье. Я предполагаю, что я не включаю правильный пакет. Вот пакеты, которые я использую в настоящее время

список метеоров — использование стандартных пакетов-

автоматическая публикация небезопасных
пробелов-компилятор — я получаю ту же ошибку с этим или без этого

…и это версия Meteor, которую я использую meteor — версия 0.8.2

================================ от code.html:

 <head>
  <title>Rendering with the inclusion tag</title>
</head>

<body>
  {{> hello}}
</body>

<template name="hello">
  <h1>Hello Dan!</h1>
  

* {{> приветствие «Джо» «Смит»}}

 <template name="__greeting">
  Greetings!
</template>
  

====================================
из code.js

 if (Meteor.isClient) {
  Template.hello.helpers({
    greeting: function(firstName, lastName){
      console.log(firstName, lastName);
      return Template.__greeting;
    }
  });
}
  

Ответ №1:

Это не имеет никакого отношения к пакетам.

Ваша полная ошибка выглядит следующим образом:

 While building the application:
client/views/pages/test.html:4: First argument must be a function, to be called on the rest of the arguments; found STRING
...type="update"}}  --> {{> greeting "Joe...
                        ^
  

Посмотрите ^ на сообщение об ошибке.

Это говорит о том, что ваш первый аргумент после {{> greeting должен быть функцией. Вместо этого он получил строку, "Joe" . Итак, вы неправильно вызываете свой помощник spacebars.

Попробуйте {{> greeting firstName="Joe" lastName="Smith"}}

Ссылка: https://www.discovermeteor.com/blog/spacebars-secrets-exploring-meteor-new-templating-engine /