2

我试图让这段代码在 ember 中工作,但它不断给我“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 回答