我试图将填充视图的对象推入数组,但引用不知何故丢失了。我得到了一个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
辅助器呈现。这部分工作得很好。当我点击其中任何一个按钮时,click事件都会触发,并执行我要求的任何操作,包括成功调用我从ProductsController
中指定的处理函数(toggleProductToCustomer
):
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来代替,但效果并不好。当我尝试从这些函数内部console.log-ing按钮的view
对象时,得到了我所期望的结果:
<(subclass of FrontLine.NewProductButton):ember623>
但是view.context
或view.templateContext
返回undefined
,我如何访问我想要的对象,以便将其添加到我的数组中?
1条答案
按热度按时间jk9hmnmh1#
答案很简单,就是一个字母的差别:
或:
提供该特定情况下的源对象,而不是
view.context
。(My到目前为止,Ember唯一真实的的挑战是对象和属性的访问器因情况而异,而且没有真正的文档。有时对象在view.context中,有时在view.content中,有时在_parentView.content中,等等。如果有一个图表使用无数不同的语法来访问相同的数据,那就太棒了。这取决于你要通过哪个特定的光圈来得到它。我还在发现它们...)