2013-05-14 20 views
5

Köşede, iki yönlü ciltleme kullanıldığında, geniş nesne yapısına "karma," vb. Tamam, ama nesne ağacımın JSON anlık görüntüsünü yalnızca orijinal olarak ait olan şeylerle almak istiyorum. Açısal, bağlı bir nesnenin "vanilya" versiyonunu elde etmenin bir yolunu sunuyor mu?JS Nesnesi "Un-Angularize" Hızlı Yolu

(. Ben UI aracılığıyla yapılan değişiklikleri yansıtmaz isteyeyim beri sadece, içinde tekme bağlayıcı önce "Orijinal değeri" saklamak istemem)

+0

Nesnenin nasıl kirlendiğini gösteren bir gösteriyi ekleyebilir misiniz? – Stewie

cevap

6

Kısa cevap:

angular.toJson(yourObj);

uzun bir açıklaması:

işlevinde inşa edilmiş bir güzel var

Angular.toJson ve JSON.stringify arasındaki tek fark, onu karmalarını/kimliklerini kesen ve pencereyi, belgeyi ve kapsamı dizelere dönüştüren bir filtreden geçirmesidir. Bunu yapmak için kendi fonksiyonunu almak isterseniz: burada angularjs kaynak kodundan ilgili pasajıdır:

if(/^\$+/.test(key)) { 
    val = undefined; 
} else if (isWindow(value)) { 
    val = '$WINDOW'; 
} else if (value && document === value) { 
    val = '$DOCUMENT'; 
} else if (isScope(value)) { 
    val = '$SCOPE'; 
} 

not: biraz ihtiyacım olacağını böyleceisWindow ve isScope fonksiyonları, dışa aktarılmaz Bu işlevi tam olarak aynı şekilde çalışmak için daha fazla hacking.

kaynak: http://docs.angularjs.org/api/angular.toJson ve https://github.com/angular/angular.js/blob/master/src/Angular.js

da esasen JSON.parse bir angular.fromJSon işlevi var.

Güncelleme İster bir $ http isteği için data olarak bir model belirtirken $ http hizmeti sizin için otomatik olarak yapar dikkati çekiyor.

+1

İhtiyacım olan buydu - çok teşekkür ederim! – blaster