1

質問:

ネストされたビューのリストを (テンプレートで定義されているように) 取得して並べ替えるにはどうすればよいですか? または、あるparentViewから別の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}}

理由:

実行時に列を並べ替えて非表示にするデータグリッドを実装しています。すべてのケースでビュー クラスを宣言してから、それらをコントローラーで使用するのは、私には見苦しく思えます。

childViewsすでに ContainerView を使用しようとしましたが、テンプレートの内容を入力する方法が見つかりませんでした

更新 現在の状態のデータ グリッドのソース コード: http://pastebin.com/E61e6WCt

4

1 に答える 1

0

これを自分で実装したい場合は、CollectionViewを見てください。各列は、ビューのコンテンツ配列内の 1 つの項目である必要があります。配列を並べ替えると、DOM 要素も正しく並べ替えられるはずです。

これが大まかなスケッチです:基本的createChildViewに、サブクラス内でオーバーライドしています。タイプを示す文字列を content 配列に渡すことができます。その後、 attrscreateChildViewオブジェクトとその content プロパティを介して現在のアイテムにアクセスできます。

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 に答える