可以从模型中显示模型中的属性到其他属性吗?

时间:2017-02-28 16:22:35

标签: backbone.js underscore.js backbone-views underscore.js-templating

您好我有一个模型属性的视图:

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,   一个

结果我从Sorters [array]得到的值不是模型值:

一些例子

1

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

P

2

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

a,P

在模板中使用此代码我没有values from models,但是我的数组和我的视图中的字符串文本而不是模型显示标签中的属性

1 个答案:

答案 0 :(得分:1)

基于sorters返回的值似乎等于模型中的其他字段的事实,您希望动态返回该字段

有几种方法可以做到这一点,最好的方法是在创建模板时提供variable选项(docs)。见下面的例子:

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而不是for循环:

<% _.each(data.sorters, function(sorter) { %>
   <h2><%= data[sorter] %></h2>
<% }) %>