问题:
如何获取嵌套视图列表(因为它们在模板中定义)并重新排序?或者将视图从一个parentView移动到另一个?
例如,我想将带日期和列的位置列与图像一起切换,或者在用户操作中隐藏其中任何一个
{{#data-grid}}
{{#grid-column}}
{{format-date date}}
{{/grid-column}}
{{#grid-column}}
{{#link-to 'somewhere'}}<img scr="i.png" title="hello"/>{{/link-to}}
{{/grid-column}}
{{/data-grid}}
原因:
我正在实现datagrid,在运行时重新排序和隐藏了列。声明所有案例的视图类,然后在控制器中使用它们对我来说似乎很难看。
已经尝试使用ContainerView但找不到用模板内容填充childViews
的方法
更新 当前状态下数据网格的源代码:http://pastebin.com/E61e6WCt
答案 0 :(得分:0)
如果您想自己实现,请查看CollectionView。您的每个列都应该是视图内容数组中的一个项目。重新排序数组也应该正确地重新排序DOM元素。
这是一个粗略的草图:基本上你在你的子类中覆盖createChildView
。您可以将字符串传递到内容数组中以指示其类型。在createChildView
之内,您可以通过attrs对象及其内容属性访问当前项目。
App.ColumnsCollectionView = Ember.CollectionView.extend({
content : ["date", "image"],
createChildView: function(viewClass, attrs) {
var itemFromContent = attrs.content; // is either 'date' or 'image'
if (itemFromContent == 'date') {
viewClass = App.YourDateColumnView;
} else {
viewClass = App.YourImageColumnView;
}
return this._super(viewClass, attrs);
}
});