0

我正在尝试将填充视图的对象推送到数组中,但引用不知何故丢失了。我有一个 Ember 视图,其中定义了eventManager

FrontLine.NewProductButton = Em.View.extend({
    tagName: 'button',
    classNames: ['addtl_product',],
    templateName: 'product-button',
    eventManager: Ember.Object.create({
        click: function(event, view) {
            FrontLine.ProductsController.toggleProductToCustomer(event, view);
        }
    })
})

该视图呈现了一堆按钮,这些按钮使用来自ProductsController使用#each帮助器的对象的属性呈现。那部分效果很好。当我点击这些按钮中的任何一个时,点击事件正在触发并执行我要求的任何操作,包括成功调用toggleProductToCustomer我从我指定的处理程序函数()ProductsController

FrontLine.ProductsController = Em.ArrayController.create({
    content: [],
    newProduct: function(productLiteral) {
        this.pushObject(productLiteral);
    },
    toggleProductToCustomer: function(event, view){
        FrontLine.CustomersController.currentCustomer.productSetAdditional.pushObject(view.context);    
    }
});

我正在尝试使用该函数将其属性填充该视图的对象推送到数组中。我的应用程序中的另一个地方(一个简单的搜索字段),使用pushObject(view.context). 然而,在这里,所有被推入数组的是undefined. 我尝试改用view.templateContext,但这并没有更好的效果。当我尝试从这些函数中控制台记录按钮的view对象时,我得到了我所期望的:

<(subclass of FrontLine.NewProductButton):ember623>

但要么view.contextview.templateContext返回undefined。如何访问我所追求的对象,以便将其添加到我的数组中?

4

1 回答 1

2

简单的答案是,这是一个字母的区别:

view.content

或者:

view.get('content')

在特定情况下提供源对象,而不是view.context.

(到目前为止,我对 Ember 的唯一真正挑战是对象和属性的访问器因情况而异,并且没有真正的文档。有时对象位于 view.context,有时位于 view.content,有时位于 _parentView .content,等等,等等。如果有一个图表,它有无数种不同的语法来访问相同的数据,这将是很棒的,这取决于你要通过哪个特定的光圈来获取它。我还在发现它们.. .)

于 2012-08-06T20:57:07.167 回答