0

編集:解決済み、残り火ビューを拡張する代わりに誤って作成していました。以下の回答を参照してください。

ブラウザにネイティブのタッチスクリーンキーボードがないタッチスクリーンデバイス用のキーボードを作成しています(HPタッチスクリーン上のGoogle Chromeですが、間違っている場合は修正してください。より簡単な解決策を利用できます)。

スタイリングを簡単にするために、キーボードを別々の行に分割したいと思います。

keyboardView: Ember.CollectionView.create({
    elementId: 'search-keyboard',
    content: [
        [ 'q','w','e','r','t','y','u','i','o','p' ],
        [ 'a','s','d','f','g','h','j','k','l' ],
        [ 'z','x','c','v','b','n','m' ],
        [ ' ' ]
    ],
    itemViewClass: Ember.CollectionView.extend({
        tagName: 'ul',
        classNames: [ 'keyboard-row' ],
        itemViewClass: Ember.View.create({
            template: Ember.Handlebars.compile( '{{view.content}}' )
        })
    })
})

もちろん、私はこのエラーを受け取ります:

Uncaught Error: assertion failed: itemViewClass must be a subclass of Ember.View, not <Ember.View:ember186> 

親ビューをContainerViewとして使用してソリューションを操作できますが、これは、子collectionViewsのclassNames、tagNamesなどを複製することを意味します。

上記のコード重複なしでこのキーボードとキーボード行を作成する方法はありますか?

4

1 に答える 1

1

おっと、拡張する代わりに残り火ビューを作成していました...次の作品:

keyboardView: Ember.CollectionView.create({
    elementId: 'search-keyboard',
    content: [
        [ 'q','w','e','r','t','y','u','i','o','p' ],
        [ 'a','s','d','f','g','h','j','k','l' ],
        [ 'z','x','c','v','b','n','m' ],
        [ ' ' ]
    ],
    itemViewClass: Ember.CollectionView.extend({
        tagName: 'ul',
        classNames: [ 'keyboard-row' ],
        itemViewClass: Ember.View.extend({   // extend! don't create!
            template: Ember.Handlebars.compile( '{{view.content}}' )
        })
    })
})
于 2013-01-27T18:05:40.520 に答える