@Alex_proger

Как подключить JST шаблон к MarionetteView?

Добрый вечер!

Компилирую JST шаблон и вставляю его код перед View
<div id="review_template">
  <% _.each( items, function( item ){ %>
    <div class='col-md-6 name-rev'>
      <p class="text"><strong><%- item.clientName %></strong></p>
    </div>
    <div class='col-xs-12 wrap' style='margin-bottom: 15px; padding: 10px 10px 5px 10px;'>
      <div class='col-md-6 time-rev'>
        <p class="text"><strong><%- item.id %></strong></p>
      </div>
      <br>
      <hr style='margin-top: 5px; margin-bottom: 5px;'>
      <div class='col-md-12'>
        <p class="text"></p>
      </div>
    </div>
  <% }); %>
</div>


Скомпилированный шаблон выглядит так:

(function() {
window["JST"] = window["JST"] || {};

window["JST"]["reviews.jst"] = function(obj) {
obj || (obj = {});
var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
function print() { __p += __j.call(arguments, '') }
with (obj) {
__p += '<div id="review_template">\r\n  ';
 _.each( items, function( item ){ ;
__p += '\r\n    <div class=\'col-md-6 name-rev\'>\r\n      <p class="text"><strong>' +
__e( item.clientName ) +
'</strong></p>\r\n    </div>\r\n    <div class=\'col-xs-12 wrap\' style=\'margin-bottom: 15px; padding: 10px 10px 5px 10px;\'>\r\n      <div class=\'col-md-6 time-rev\'>\r\n        <p class="text"><strong>' +
__e( item.id ) +
'</strong></p>\r\n      </div>\r\n      <br>\r\n      <hr style=\'margin-top: 5px; margin-bottom: 5px;\'>\r\n      <div class=\'col-md-12\'>\r\n        <p class="text"></p>\r\n      </div>\r\n    </div>\r\n  ';
 }); ;
__p += '\r\n</div>\r\n';

}
return __p
}})();


Далее создаю View и рендерю...
var ReviewsView = Marionette.View.extend({
  initialize: function () {
    this.collection = new app.ReviewCollection();
    this.collection.fetch();
  },
  template: JST['reviews.jst']
});

var myView = new ReviewsView();
myView.render();


Шаблон JST разворачивается в документе до цикла _.each, больше в разметку ничего не попадает...
Хотя из шаблона DOM доступен, возможно вынести коллекции в отдельный объект и получать их шаблоном из отдельного объекта, как справочник ?

26.01.17 :

Как то так ...
916be710f04940979d8d33762f426172.jpg
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 2
@alexesDev
Marionette.Renderer как написан? Обычно рекомендую писать что-то вроде:
Marionette.Renderer.render = function(template, data) {
  return JST[template](data);
};

И самой вьюхе
var ReviewsView = Marionette.View.extend({
  initialize: function () {
    this.collection = new app.ReviewCollection();
    this.collection.fetch();
  },
  template: 'reviews.jst',
});

Попробуйте для вьюхи написать
template: function(data) { console.log(data); return 'Test view' },

И просто вызвать в консоли разработчика
JST['reviews.jst']({ items: [] });
Ответ написан
@Alex_proger Автор вопроса
Проблема найдена и она не в шаблоне...
Коллекция пустая, переписал пока на Backbone, на выходных будут писать приложение, разбираться, видимо косяк с events какой то... В любом случае, спасибо за помощь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы