在“木偶”区域中显示“骨干集合”元素

肺心病

我有一个Backbone应用程序正在运行,并且可以与requirejs一起正常使用。现在,我正在尝试迁移到Marionette,以便更好地组织代码。

我只想显示一个区域中某个集合的模型,而另一个区域中有两个按钮。我想转到该集合中的下一个或上一个模型。并更改其在模型区域上的视图。

但是我不知道如何遍历集合并将其模型发送到视图。

jsfiddle在这种情况下提供了一些简化的代码。

的HTML:

<div class="player"></div>

<script id="layout-template" type="text/template">
    <div class="modelView"></div>
    <div class="controls"></div>
</script>
<script id="model-region" type="text/template">
    <%=name%>
</script>
<script id="control-region" type="text/template">
    <button id="prev">Prev</button>
    <button id="next">Next</button>
</script>
斯科特·普莱奥

如果我理解您的问题,则您正在尝试在同一布局上的两个视图之间协调事件。在这种情况下,我建议设置一个Controller

然后,您可以在控件视图上注册视图触发器

ControlsView = Backbone.Marionette.ItemView.extend({
  // ...

  triggers: {
    "click #previous": "control:previous",
    "click #next": "control:next"
  }
});

然后在控制器中,您将实例化视图并为controlView触发器设置处理程序以更新modelView。

var Router = Marionette.AppRouter.extend({
  appRoutes: {
      "/": "start",
      "/:index" : "showModel"
  },
});

var Controller = Marionette.Controller.extend({

  initialize: function(){
    var self = this;
    this.controlsView = new ControlsView();
    this.modelView = new MainView();
    this.myCollection = new MyCollection();
    this.myIndex = 0;
    this.myCollection.fetch().then(function(){
      self.myIndex = 0;
    });
    this._registerTriggers();
  },
  start: function(){
    this.controlLayout.show(this.controlView);
    this.showModel();
  },
  showModel: function(index){
    index = index || this.index;
    this.modelView.model = myCollection.at(this.index);
    this.modelLayout.show(this.modelView);
  },
  showNext: function(){
    var max = this.myCollection.models.length;
    this.index = max ? 1 : this.index + 1;
    this.showModel();
  },
  showPrevious: function(){
    var max = this.myCollection.models.length;
    this.index = 0 ? max : this.index - 1;
    this.showModel();
  },
  _registerTriggers: function(){
    this.controlsView.on("control:next", this.showNext());
    this.controlsView.on("control:previous", this.showPrevious());
  }
}

var controller = new Controller();
var router = new Router({
  controller: Mod.controller
});
controller.start();

使用这种方法可以使视图和集合脱钩。这将使您的代码可重用(以不同上下文中的控件视图为例)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery中El的骨干木偶目标元素

来自分类Dev

在观看区域中如何显示带有动画的元素?

来自分类Dev

在观看区域中如何显示带有动画的元素?

来自分类Dev

骨干/木偶-为一个区域处理多种布局

来自分类Dev

骨干+木偶-用于模型/集合的内存管理最佳实践?

来自分类Dev

骨干+木偶-模型/集合的内存管理最佳实践?

来自分类Dev

区域中的最大元素

来自分类Dev

骨干木偶:可重复使用的UI元素

来自分类Dev

如何在骨干木偶中创建与DOM相关的元素?

来自分类Dev

骨干木偶递归列表

来自分类Dev

骨干木偶复合视图?

来自分类Dev

骨干木偶动画CollectionView

来自分类Dev

OpenX:停用的横幅显示在区域中

来自分类Dev

在文本区域中显示选定的选项

来自分类Dev

反向显示文本区域中的行

来自分类Dev

牵线木偶递增后显示新元素

来自分类Dev

在木偶版面视图中测试缺少的区域元素

来自分类Dev

骨干区域中的textarea和下划线html解码内容

来自分类Dev

骨干区域中的textarea和下划线html解码内容

来自分类Dev

显示选中的区域中的复选框,未选中的区域中的复选框

来自分类Dev

骨干木偶-布局视图僵尸

来自分类Dev

骨干集合中的集合

来自分类Dev

骨干:在VIEW上显示集合中每个模型的验证错误

来自分类Dev

我需要获取放置在文本区域中的每个元素

来自分类Dev

在文本区域中显示所选文本

来自分类Dev

QSystemTrayIcon未显示在Ubuntu 14.04的通知区域中

来自分类Dev

摘录未显示在“最新帖子”区域中。为什么?

来自分类Dev

枢轴网格在行区域中显示数据字段

来自分类Dev

让所选的单选按钮显示在文本区域中

Related 相关文章

热门标签

归档