Переместить ли / затем логику в представление или модель или оставить в шаблоне?

После создания веб-приложения с использованием магистрали для фирмы, занимающейся разработкой движков, мне стало интересно, стоит ли мне удалять логику "если / то" из HTML-шаблонов.

Чтобы прояснить, что я имею в виду, вот два примера, которые я сейчас использую в производстве.

Если бы я переместил логику if / then из шаблона, я бы переместил ее в представление, но я не уверен, является ли это "правильным" или "опорным" способом ведения дел.

Я принимаю плохие дизайнерские решения, или то, что я сделал, хорошо?

Спасибо!

Простой пример 1:

По мнению:

//m is the model used by the view
return Backbone.View.extend({
    template: _.template(tmpl, null, { variable: 'm' }),

В шаблоне:

 {% if(m.title) { %}
      <h4> {%- m.title %} </h4>
 {% } else { %}
      <h4>Experiment Title Goes Here</h4>
 {% } %}

Сложный Пример 2:

По мнению:

//args are the model attributes passed into the view
initialize: function (args) {
    this.currentEngine = args.currentEngine;
    this.engineDisplay = args.engineDisplay;
    this.engineType = args.engineType;
    this.isCurrent = this.model.isCurrent(this.currentEngine);

},

render: function () {

    this.$el.html(this.template({
    engineDisplay: this.engineDisplay,
    engineType: this.engineType,
    isCurrent: this.isCurrent;

}));

В шаблоне:

 {% if(!engineDisplay) { %}
        {% if (m.isCurrent && (engineType === 'GAS' || engineType === 'ECO')) { %}
            <span>Not Available</span>
        {% } else { %}
            <span>
                    <span>Click here to select</span>
            </span>
        {% } %}
 {% } %}

1 ответ

Решение

Я думаю, что ваша первая реализация была правильной. Держите логику вне поля зрения. "Правильный" или "магистральный" способ - сохранить логику там, где она должна быть:

  1. модель / коллекция содержит код "откуда" данные должны поступить.
  2. представление содержит код того, что нужно сделать / отобразить. (что должно произойти, если событие X произойдет)
  3. шаблон должен содержать код "как", он должен отображаться.

Я уверен, что мне не хватает материала.. Я подожду, пока комментарии не скажут мне, насколько я не прав, а затем я исправлю это.

-Sheers

Другие вопросы по тегам