ember this.get Uncaught TypeError:Object#<window>没有方法'get'</window>

时间:2012-09-21 06:24:25

标签: javascript jquery ember.js

我试图让这段代码在ember中工作,但它一直在给我 “Uncaught TypeError:Object#没有方法'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;
            });             

        }
    });
}

);

1 个答案:

答案 0 :(得分:3)

使用forEach方法时,您可以在上下文中传递将设置为this的目标对象,如文档中所述:

  

请注意,除了回调之外,您还可以传递将在上下文中设置为“this”的可选目标对象。这是让迭代器函数访问当前对象的好方法。

所以你的代码现在应该是:

items.forEach(function(item) {
  this.get('element_id')[item.id] = true;
}, this);