2

このコードを残り火で動作させようとしていますが、「Uncaught TypeError:Object#has no method'get'」がオンラインで 表示され続けthis.get('element_id')[item.id] = true;ます。なぜelement_idハッシュにアクセスできないのですか?

function() {
    return Ember.ArrayProxy.extend({
        box: null,
        content: [],
        element_id: {},

        init: function() {
            this._super();
            var items = this.get( 'box' ).getData();
            if ( items.get( 'length' ) ) {
                this.set( '[]', items );
            };

            // Initialize the hash
            items.forEach(function(item) {
                this.get('element_id')[item.id] = true;
            });             

        }
    });
}

);

4

1 に答える 1

3

forEachメソッドを使用する場合this、ドキュメントで説明されているように、コンテキスト上に設定されるターゲットオブジェクトを渡すことができます。

コールバックに加えて、コンテキストで「this」として設定されるオプションのターゲットオブジェクトを渡すこともできることに注意してください。これは、イテレータ関数に現在のオブジェクトへのアクセスを許可するための良い方法です。

したがって、コードは次のようになります。

items.forEach(function(item) {
  this.get('element_id')[item.id] = true;
}, this); 
于 2012-09-21T06:35:07.353 に答える