将选定的网格行传递到木偶中的下一个视图

时间:2014-03-17 06:48:08

标签: backbone.js marionette

我的第一个视图中有一个网格,一旦我在网格中选择了一些行并单击下一步,所选的行数据就会显示在下一个视图中。如何实现这一要求。我是骨干和牵线木偶的新手。我能够从以下代码中获取所选数据

var selectedData = [],
    selectedIndexes;

selectedIndexes = grid.getSelectedRows();
$.each(selectedIndexes, function (index, value) {
    selectedData.push(grid.getDataItem(value));
});

其中selectedData作为Object数组出现,当我试图设置为view对象的model属性时,它给出了错误。

请告诉我如何传递数据并在下一个视图中访问它。

1 个答案:

答案 0 :(得分:0)

事件是非常好的概念,允许在您的应用程序中创建可靠且独立的组件。它是Backbone的核心。

所以在你的情况下,你有网格 - CompositiomViewCollectionView)代表模型的集合。每个模型都在其自己的ItemView - 网格中的行中呈现。使用View.triggers,您可以在点击ItemView时触发事件:

Row = Marionette.ItemView.extend({
  // ...

  triggers: {
    "click": "clicked"
  }
});

之后CompositiomViewCollectionViewautomatically retriggers event of his child使用前缀itemview查看自己。因此,您可以直接在CompositiomViewCollectionView)上收听此活动。最好在Mediator中了解两种观点。

应该看起来像:

var gridView = new GridView({collection: collection});

gridView.on('itemview:clicked', function(itemView){
  var someView = new SomeView({model: itemView.model});
  secondRegion.show(someView);
});

firstRegion.show(gridView);