我有一个Ember.Select,其valueBinding设置为数组中的item属性。正在观察这个属性"通过一个功能。尽管属性的值已经改变,但在选择更改后,该函数会被触发。
HandelBars:
{{#each tmpUploadedDocument in App.uploadedDocuments}}
{{view Ember.Select
valueBinding="tmpUploadedDocument.Category"
selectionBinding="tmpUploadedDocument.selectedItem"
contentBinding="App.documentCategories"
optionValuePath="content.value"
optionLabelPath="content.label"
prompt="Select Category..."
}}
{{/each}}
使用Javascript:
window.App = Ember.Application.create();
App.documentCategories = [];
App.documentCategories.push({label: 'A', value: '1'},{label: 'B', value: '2'});
App.uploadedDocuments = Ember.A();
var tmpDocument = Ember.Object.create({
Category: 0,
CategoryDidChange: function() {
console.log('Category changed to: ' + this.Category);
}.observes('Category')
});
App.uploadedDocuments.addObject(tmpDocument);
这个jsbin显示得更清楚:JSBIN
我想在观察功能中完成的是过滤第二个Ember.Select。这是正确的方法吗?我怎样才能使这个jsbin工作?
感谢任何意见。
答案 0 :(得分:2)
问题在于,在定义具有Ember.Object.create
的类时,您正在尝试在Ember.Object.extend
中定义观察者。您应该定义这样的类:
var TmpDocument = Ember.Object.extend({
然后从中实例化您的tmpDocument
实例,或者您需要在创建文档之后将观察者添加到文档中,就像我在this working modification of your JS Bin中所做的那样:
tmpDocument.addObserver('Category', function() {
console.log('Category changed to: ' + this.Category);
});