2012-01-26 37 views
5

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ì ?!

Trả lời

5

[2014-02-19: Không dùng nữa - Tôi không còn hỗ trợ nghỉ phép vì nó quá đơn giản và khuyên bạn nên sử dụng dữ liệu ember cho hầu hết các dự án ember. Kiểm tra the Ember guides cho một cái nhìn tổng quan của ember dữ liệu cũng như này example project]

tôi đã tạo ra một thư viện rất đơn giản để xử lý làm việc với giao diện REST của từ Ember: https://github.com/cerebris/ember-rest

Tôi cũng đang viết một loạt bài đăng về cách sử dụng thư viện này từ Rails. Đầu tiên là ở đây: http://www.cerebris.com/blog/2012/01/24/beginning-ember-js-on-rails-part-1/

Bài đăng tiếp theo của tôi, hy vọng đến sau ngày hôm nay, giao dịch chính xác với tải dữ liệu qua AJAX vào một tập hợp các đối tượng Ember. Bây giờ, bạn có thể thấy hành vi này trong ứng dụng mẫu cũng như readme ember-rest.js.

Nếu bạn muốn tránh sử dụng lib này, bạn có thể vẫn muốn kiểm tra nguồn. Phương pháp deserialize() trên Ember.Resource được sử dụng để nhập JSON và cũng có thể được sử dụng với chung Ember.Object.

7

Hãy nhìn vào các thư viện Ember dữ liệu, nó đã được thực hiện để sử dụng hợp cụ thể của bạn và có liên quan trường hợp sử dụng:

https://github.com/emberjs/data

+1

Ember dữ liệu không phải là sản xuất sẵn sàng – Gambo

+1

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. –

Các vấn đề liên quan