Question

Est-ce une bonne idée d'avoir / ajouter une logique à l'intérieur d'un modèle javascript comme ça?

<time style="display: <%= time ? 'block' : 'none' %>"><%= time %></time>

Comment est le temps de rendu affecté par cela? Est-ce une grande différence il?

Était-ce utile?

La solution

En général, il est sage d'éviter la logique dans les modèles, bien que la sortie conditionnelle d'un bloc si une valeur est initialisé est ok.

Ce qui suit, je ne serais pas un problème:

<% if(time) { %><time><%= time %></time><% } %>

Pour votre situation, je referais ce. Dans votre <head> (ou css):

<style>
  time:empty { display: none; }
</style>

Dans votre modèle:

<time><%= time %></time>

Je ne suis pas certain de support du navigateur pour le `: pseudo-sélecteur empty', mais juste pour être sûr que vous pouvez également faire:

$("time:empty").hide();

Autres conseils

En général, la logique ne devrait pas être dans les modèles. La logique devrait être dans les modèles et les contrôleurs, plus de celui-ci dans les modèles et moins dans les contrôleurs, mieux.

Cependant, dans l'exemple particulier que vous avez présenté, le conditionnel est pas vraiment logique, il est plus comme faire en sorte que le modèle ne se casse pas. Donc, sur le plan conceptuel, ce genre de « logique » doit être présent dans la vue.

Je pense que la documentation Django sur leurs modèles fait un bon travail de séparation (et expliquer) la logique qui va dans les modèles et la logique qui ne fait pas vraiment dans les modèles. https://docs.djangoproject.com/en/dev/ref/templates/ builtins /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top