1

问题:

如何获取嵌套视图列表(在模板中定义)并重新排序?或者将视图从一个 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}}

原因:

我正在通过在运行时重新排序和隐藏列来实现数据网格。为所有情况声明视图类,然后在控制器中使用它们对我来说似乎很难看。

已经尝试使用 ContainerView 但找不到填充childViews模板内容的方法

UPDATE 当前状态下的数据网格源代码:http: //pastebin.com/E61e6WCt

4

1 回答 1

0

如果你想自己实现这个,你应该看看CollectionView。您的每一列都应该是视图内容数组中的一项。重新排序数组也应该正确地重新排序 DOM 元素。

这是一个粗略的草图:基本上你在你的子类中覆盖createChildView。您可以将字符串传递到指示其类型的内容数组中。然后,您可以通过attrscreateChildView对象及其内容属性访问当前项目。

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);
    }
});
于 2013-11-07T13:20:48.040 回答