Можно ли показать атрибуты из модели другим атрибутам из модели?

Привет у меня есть вид с атрибутами модели:

name: "P",
surname: "a",
sorters: ["name","surname"]   // dynamical array ( parameter to show )

в шаблоне:

<% for(i=0 ;i<sorters.length(); i++ ){ %>
   <h2><%= sorters[0] %></h2>   // its <%= 'name' %> with quotes 
<% } %>

в результате я получил

имя Фамилия

мне нужно получить

P, a

В результате я получаю значения из Sorters[array], а не из значений модели:

Некоторые примеры

1.

name: "P",
surname: "a",
sorters: ["name"] 

п

2.

name: "P",
surname: "a",
sorters: ["surname","name"] 

а, р

С этим кодом в шаблоне у меня нет values from models но строковый текст из моего массива и моего представления вместо атрибутов из меток показа модели

1 ответ

Решение

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

Есть несколько способов сделать это, вероятно, лучше всего предоставить variable опция при создании шаблона ( документы). Смотрите пример ниже:

var model = new Backbone.Model({
  name: "P",
  surname: "a",
  sorters: ["name","surname"]
});

var tmp = _.template($('#template').html(), {variable: 'data'});
$('#result').html(tmp(model.attributes));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
<script id="template" type="text/template">
<% for(i=0; i < data.sorters.length; i++ ){ %>
   <h2><%= data[data.sorters[i]] %></h2>
<% } %>
</script>
<div id="result"/>

Кроме того, лучше использовать each а не для цикла:

<% _.each(data.sorters, function(sorter) { %>
   <h2><%= data[sorter] %></h2>
<% }) %>
Другие вопросы по тегам