Я использую вкладки jquery в своем коде. Мне нужно вызвать $ ('ul.tabs'). Tabs(); после того, как HTML визуализируется. Но это бросает ошибку «Тип: d [0] не определено». Используемый код приведен ниже.Шаблон, сделанный обратный вызов
<template name="customersMapping">
<div class="col s9 blue-grey lighten-5" id="side-right">
<div class="row">
<div class="col s12">
<ul class="tabs" id="usersMappingTab">
{{#each customerClientMapping}}
<li class="tab col s2"><a href="#{{_id}}_Tab">{{name}}</a></li>
{{/each}}
</ul>
</div>
{{#each customerClientMapping}}
<div id="{{_id}}_Tab" class="col s12">
{{#each userChats ..}}
<div>{{name}}: {{message}}</div>
{{/each}}
</div>
{{/each}}
</div>
</div>
В client.js
Template.customersMapping.rendered = function() {
if ($('#usersMappingTab').length > 0) {
$('ul.tabs').tabs();
}
};
Template.customersMapping.helpers({
'customerClientMapping' : function() {
return UserChatsMapping.find({cid : Meteor.userId()}, {sort: {time: -1}});
},
'userChats' : function() {
return Messages.find({uid:this.uid}, {sort:{time: -1}});
}
});
Я думаю, что функция JQuery вызывается до HTML визуализации. Пожалуйста, дайте мне знать, как это исправить.
попробовать 'Meteor.setTimeout' и применять через 500 миллисекунд или в конце шаблона создать помощник, который будет применять язычки – Sasikanth
это проблема с данными позади' customerClientMapping' помощник. Имейте в виду, что изначально все коллекции будут пустыми и всего лишь через секунду они будут заполнены данными с сервера. Вам нужно будет дождаться появления этих данных, прежде чем вы сможете предположить, что список не пуст. –
Вы попробовали Template.customersMapping.onRendered? http://docs.meteor.com/#/basic/Template-onRendered – mahdavipanah