我的第一个视图中有一个网格,一旦我在网格中选择了一些行并单击下一步,所选的行数据就会显示在下一个视图中。如何实现这一要求。我是骨干和牵线木偶的新手。我能够从以下代码中获取所选数据
var selectedData = [],
selectedIndexes;
selectedIndexes = grid.getSelectedRows();
$.each(selectedIndexes, function (index, value) {
selectedData.push(grid.getDataItem(value));
});
其中selectedData作为Object数组出现,当我试图设置为view对象的model属性时,它给出了错误。
请告诉我如何传递数据并在下一个视图中访问它。
答案 0 :(得分:0)
事件是非常好的概念,允许在您的应用程序中创建可靠且独立的组件。它是Backbone的核心。
所以在你的情况下,你有网格 - CompositiomView
(CollectionView
)代表模型的集合。每个模型都在其自己的ItemView
- 网格中的行中呈现。使用View.triggers,您可以在点击ItemView
时触发事件:
Row = Marionette.ItemView.extend({
// ...
triggers: {
"click": "clicked"
}
});
之后CompositiomView
(CollectionView
)automatically retriggers event of his child使用前缀itemview
查看自己。因此,您可以直接在CompositiomView
(CollectionView
)上收听此活动。最好在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);