Как передать информацию о коллекции через блок #each в Meteor?

Я заполняю раскрывающееся меню различными элементами из коллекции метеоров Cases.

  <select id="caseChoice">
   {{#each case}}
     <option>{{name}}</option>
   {{/each}}
  </select>

Я получаю значение выбора, иначе имя:

 var caseName = document.getElementById("caseChoice").value;

И я могу получить идентификатор дела, используя:

 var caseID = Cases.findOne({name:caseName})._id;

Однако я планирую разрешить пользователям создавать дела с тем же именем. Это способ передать идентификатор через {{each}} без отображения _id в раскрывающемся списке?


person Nate    schedule 01.05.2014    source источник
comment
Разве вы не можете просто использовать атрибут value элемента option?   -  person Rahul    schedule 01.05.2014
comment
@Nate <option value="{{_id}}">{{name}}</option>, тогда document.getElementById("caseChoice").value будет значением атрибута value для выбранного элемента option, также известного как идентификатор выбранного документа в данном случае.   -  person Peppe L-G    schedule 01.05.2014


Ответы (1)


Если вы имеете в виду, что хотите, чтобы каждый HTML-тег содержал идентификатор, вы можете сделать это, используя атрибут value параметра или, альтернативно, используя атрибуты данных html5:

{{#each case}}
  <option value="{{_id}}" data-id="{{_id}}">{{name}}</option> // can use value= or data-id=
{{/each}}

Это будет видно в исходном коде браузера, но не на экране для пользователя. В качестве альтернативы, если вы хотите получить доступ к идентификатору через события шаблона, он также будет доступен там:

"click option" /*or whatever event handler is appropriate here*/: function(event, template){
  var id = template.data._id;
  /* alternatively you can call this._id which will generally give you the same result */
  /* then do your event handling, etc. */ 
}
person Jeremy S.    schedule 01.05.2014
comment
Как сказал Рахул, почему бы не использовать атрибут value? - person Peppe L-G; 01.05.2014
comment
Нет причин. В этом случае они должны быть эквивалентны. Я отредактирую ответ, чтобы избежать путаницы. - person Jeremy S.; 01.05.2014
comment
отличный ответ. Спасибо, ДжеремиС. и @PeppeL-G. - person Nate; 01.05.2014
comment
@ДжеремиС. Я думаю, что атрибут value предоставляет поисковым системам (паукам) лучшую информацию, чем атрибут data (они полностью игнорируют атрибут data?), но, возможно, строка id не имеет большого значения. - person Peppe L-G; 02.05.2014