Tất cả các ví dụ đang sử dụng nguồn dữ liệu cố định trong arraycontroller.content, trong khi tôi đang sử dụng nguồn dữ liệu động được tạo từ dịch vụ web anther và trả về JSON, nó sẽ không tạo ra một đối tượng mà tôi khai báo trong Ember, đây là mẫu mã:Cách liên kết nội dung với JSON trong Ember.js
ET.AppYear = Ember.Object.extend({
text:null,
value:null
});
ET.EmailTypes = Ember.Object.extend();
ET.appYearController = Ember.ArrayController.create({
content: [],
loadYears: function (year) {
if (year != null) {
for (var i = -5; i < 5; i++) {
this.pushObject({ text: year + i, value: year + i });
//.AppYear.create({ text: year + i, value: year + i });
}
}
}
});
ET.selectedAppYearController = Ember.Object.create({
selectedAppYear: '2011',
alertChange: function(){
alert("selected App Year is now " + this.get('selectedAppYear'));
}.observes('selectedAppYear'),
isChanged: function() {
if (this.appYear != null) {
this.set('selection',this.get('content'));
//LoadETByAppYearETTypeID(this.selectedAppYear, ET.selectedEmailTypesController.emailType.email_template_type_id);
}
} .observes('selectedAppYear'),
AppYear: function() {
var ay = ET.appYearController.findProperty('text',this.get('selectedAppYear'));
return ay;
}.property('selectedAppYear')
});
Như bạn thấy, tôi sẽ gọi ET.appYearController.loadYears
(JSON) trong một bài đăng AJAX trở lại, mà sẽ tạo ra nội dung bằng cách sử dụng this.pushObject
, nhưng đây không phải là lược đồ đối tượng ET.AppYear
, trong khi tôi gọi ET.selectedAppYearController.selectedAppYear
, nó trả về một đối tượng không xác định và thực sự trả về một đối tượng có lược đồ {text:xx,value,xx}
. Đó là lý do tại sao selectionBinding
cũng sẽ không hoạt động trong trường hợp này.
Vậy giải pháp điển hình cho việc này để nhập các phần tử JSON như đối tượng được xác định và đưa vào nội dung là gì ?!
Ember dữ liệu không phải là sản xuất sẵn sàng – Gambo
Ember dữ liệu vẫn còn trong phiên bản beta , nhưng nó đang được sử dụng trong các ứng dụng sản xuất. –