2012-06-07 24 views
7

Cách tốt nhất để tạo một mảng các đối tượng ember từ một mảng đối tượng json là gì?Ember.js cách tải một mảng các đối tượng ember đơn giản

tôi có thể sử dụng SetProperties trên mỗi đối tượng cá nhân như thế này:

var ret = Ember.A(); 

pojos.forEach(function(obj){ 
    var em = Ember.Object.create({}); 
    emCluster.setProperties(obj); 
    ret.push(emCluster); 
}); 

Nhưng có một cách một dòng có được kết quả tương tự?

Trả lời

7

tôi muốn map thay vì sử dụng forEach:

pojos.map(function(obj){ 
    return Ember.Object.create().setProperties(obj); 
}); 
+0

Có cách nào để lặp qua các đối tượng không? – NkS

1

Yep:

var ret = pojos.map(function(data) { return Ember.Object.create(data); }); 
+0

Điều này không có kết quả tương tự. 'create' có ý nghĩa khác với' setProperties'. – ebryn

+0

Đúng, nhưng không có ngữ cảnh đầy đủ, không chắc chắn nó sẽ tạo ra sự khác biệt lớn, vì chúng ta không biết liệu những vật thể đó sau đó có bị ràng buộc hay không. Nếu vậy, chi phí trên không sẽ được trả khi ràng buộc. Nhưng thú vị để có sự khác biệt tinh tế này nhấn mạnh. Thks. :) –

+0

Trên thực tế, sự khác biệt chính là nếu bạn sử dụng setProperties tính toán setters bất động sản sẽ được gọi. Với việc tạo ra, họ sẽ bị ghi đè. – ebryn

0

tôi sử dụng này trong đào tạo ứng dụng của tôi để có được json từ máy chủ từ xa và phân tích nó để mảng của các đối tượng .

App.Model.reopenClass({ 
    allItems: [], 
    find: function(){ 
    $.ajax({ 
     url: 'http://remote_address/models.json', 
     dataType: 'json', 
     context: this, 
     success: function(data){ 
     data.forEach(function(model){ 
      this.allItems.addObject(App.Model.create(model)) <------------------- 
     }, this) 
     } 
    }) 
    return this.allItems; 
    }, 
}); 
0
ret = (Em.Object.create pojo for pojo in pojos) 
Các vấn đề liên quan