Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用木偶模板的backbone.js集合视图示例_Backbone.js_Marionette_Backbone.js Collections - Fatal编程技术网

使用木偶模板的backbone.js集合视图示例

使用木偶模板的backbone.js集合视图示例,backbone.js,marionette,backbone.js-collections,Backbone.js,Marionette,Backbone.js Collections,你能给我推荐一些通过木偶模板系统显示列表视图的例子吗。基本上,我有一个木偶模板,并根据该模板创建一个表列表 要使用主干木偶创建表行列表,您需要定义五件事: 每行一个模型 用于保存所有行模型的集合 迭代集合的CollectionView 提供行特定功能的ItemView ItemView的模板,为每行提供标记 示例用例 假设您拥有以下数据: var stooges = [{ name: 'moe', age: 44, userid: 1}, { name: 'l

你能给我推荐一些通过木偶模板系统显示列表视图的例子吗。基本上,我有一个木偶模板,并根据该模板创建一个表列表

要使用主干木偶创建表行列表,您需要定义五件事:

  • 每行一个模型
  • 用于保存所有行模型的集合
  • 迭代集合的
    CollectionView
  • 提供行特定功能的
    ItemView
  • ItemView
    的模板,为每行提供标记
示例用例 假设您拥有以下数据:

var stooges = [{ name: 'moe', age: 44, userid: 1}, 
               { name: 'larry', age: 44, userid: 2}, 
               { name: 'curly', age: 44, userid: 3}];
定义模型和集合 对于以下数据,您需要一个模型:

var StoogeModel = Backbone.Model.extend({});
在这里,您可以为数据和其他属性设置一些合理的默认值,如
idAttribute
。关于如何自定义模型,有很多参考资料。您的收藏至少应采用
stoogeModel

var StoogeCollection = Backbone.Collection.extend({
  model: StoogeModel
});
建立你的观点 要迭代集合并将其呈现到表中,您只需要一个
CollectionView
和一个
ItemView

var StoogesCollectionView = Backbone.Marionette.CollectionView.extend({
  tagName: "table",
  childView: StoogeItemView
});
所有
collectionview
至少需要一个
childView
,这是一个
ItemView
(我们在下面定义),他们将使用该视图派生功能来为每一行创建html,以及一个
collection
集合,该集合包含填充每一行的模型。我们将在安装
stoogesCollectionView
时传入此集合。
标记名
属性告诉主干将子项封装在
标记中

var StoogeItemView = Backbone.Marionette.ItemView.extend({
  tagName: "tr",
  template: '#stooge-template'
});

<script type="text/template" id="stooge-template">
  <td id="name"><%= name %></td>
  <td id="age"><%= age%></td>
  <td id="userid"><%= userid%></td>
</script>
这些被塑造成模型,并载入你的收藏

var myStooges = new StoogeCollection(stooges);
加速您的
收藏视图
将加载的集合传递到集合视图

var myStoogesView = new StoogesCollectionView({ collection: myStooges  });
呈现您的视图 所有木偶视图都附带了一个
render
方法。在我们的例子中,调用

myStoogesView.render();
将创建一个
,其中包含三个
元素,每个元素都有一列,分别用于数据集中的
名称
年龄
用户ID
字段。要在DOM中插入生成的HTML,我们只需使用视图的
el
属性。为了简单起见,我们可以将视图直接注入到主体中

document.body.appendChild(myStoogesView.el);
或者使用jQuery:

$(document.body).append(myStoogesView.el);
除此之外
有很多功能我们甚至没有开始讨论。读这本书!并查看许多教程。希望这个简短的介绍能有所帮助

你是说主干模板系统吗?木偶网不实现任何特定的模板处理程序。默认情况下,主干与下划线的u.template()一起打包。Stackoverflow旨在帮助您解决实现问题,而不是设计问题。我想你的问题在Hi会更好,谢谢。我有个问题。我有一个类似这样的Json{'status'=>'Success',数据:[{'set1':'set2','set3':'set4'}]}。如何在集合模板中设置“状态”值?因为集合模板仅包含“数据”数组。我应该使用两种不同的观点吗?我不介意回答你的最后一个问题,但StackOverflow更希望你为与原始帖子没有直接关系的问题打开一个新帖子。为什么文档从来没有这么简单?非常感谢。漂亮的回答@seebiscuit@seebiscuit那个么用户是否提出了新的问题?