我找不到任何方法來完成這種轉換的任務,因爲我找不到任何方法獲取對象的Ember.js屬性。 Ember.keys
僅返回我在create
或get
中設置的屬性,並且在Ember.extend
中聲明的屬性不會顯示在那裏。我用這樣的屬性來設置默認值(例如[]
數組屬性)有沒有什麼方法可以將Ember對象轉換爲純javascript對象?
回答
此刻,我用下面的代碼片段解決這個問題:
App.plainCopy = function (obj) {
if (Ember.isArray(obj)) {
return obj.map(App.plainCopy);
} else if (typeof(obj) === "object") {
if (App.Plainable.detect(obj)) {
return obj.plainCopy();
} else {
throw new Error(Ember.String.fmt("%@ is not Plainable", [obj]));
}
} else {
return obj;
}
}
App.Plainable = Ember.Mixin.create({
plainCopy: function() {
var props = Ember.keys(this);
var proto = this.constructor.prototype;
for(p in proto) {
if (proto.hasOwnProperty(p) && typeof(this[p])!=="function") {
props.push(p);
}
}
var copy = {};
props.forEach(function(p) {
copy[p] = App.plainCopy(this.get(p));
}, this);
return copy;
}
});
它不上去的類層次結構,不看到mixins中(因爲我使用的數據對象非常簡單,從這個角度來看)
我會做類似於上面的人的事情,但我會做一點不同的事情。
密新
App.NativeObject = Ember.Mixin.create({
toNative: function() {
var properties = [];
for (var key in this) {
if (jQuery.inArray(Ember.typeOf(object[key]), ['string', 'number', 'boolean']) !== -1) {
properties.push(key);
}
}
return this.getProperties(properties);
}
});
對象
然後你只需要實現你的對象App.NativeObject
混入,你會喜歡toNative
上:
var Object = Ember.Object.extend(App.NativeObject, {
name: 'Adam',
count: 4
});
然後我們有toNative
方法實現我們的混合的所有對象。
強制性的jsfiddle:http://jsfiddle.net/jumUx/
可滿足您的需求,而不是嵌套灰燼對象完全遞歸的另一種可能的解決方案:
// where myEmberObject is.. an ember object
var plainJavaScriptObject = myEmberObject.toJSON();
這將只包含您定義和實際性能沒有灰燼內部。同樣,這裏的缺點是任何嵌套的Ember對象本身都不會被轉換,而是會以「」形式顯示爲字符串。
這裏是我的髒解決辦法
var newModel = JSON.parse(JSON.stringify(model));
注意:這不包括函數 – Jaime 2014-03-18 00:38:57
現在你可以使用'model.toJSON()'。 – 2018-01-29 15:20:44
這是我做的,它工作得很好。請注意,這應該只是準備好了,在複製對象的對象或陣列中的任何改變會影響到原始對象
App.BaseValidations = Ember.Object.create({
toObject: function() {
var destination = {}
for (var k in this) {
if (this.hasOwnProperty(k) && typeof(this[k]) !== 'function') {
destination[k] = this[k];
}
}
return destination;
}
})
的東西很簡單,以至於工作不夠正確對我來說是:
Ember.Object.reopen({
toJson: function() {
return JSON.parse(JSON.stringify(this));
}
});
在應用加載時。
- 1. 有沒有什麼辦法在JavaScript中將大對象轉換爲小對象?
- 2. 對象[對象對象]沒有方法'可拖動'爲什麼?
- 3. 什麼是將DataTable轉換爲對象的最有效方法[,]?
- 4. 對象沒有方法Javascript
- 5. JavaScript對象沒有方法
- 6. 爲什麼數組中的對象沒有對象方法?
- 7. 爲什麼Javascript對象沒有改變?
- 8. 將javascript對象轉換爲c#對象
- 9. 將javascript對象轉換爲json對象
- 10. 有什麼辦法可以防止替換JavaScript對象屬性?
- 11. 有沒有什麼方法可以將秒轉換爲Java 8中的LocalDateTime或ZonedDateTime對象
- 12. Javascript對象[對象對象]沒有方法'bPopup'
- 13. JavaScript對象有沒有方法例外
- 14. 將對象[]轉換爲另一個對象[],有可能嗎?
- 15. 對象[對象對象]沒有方法'可排序'
- 16. 有沒有辦法將文本表格轉換爲PowerShell對象
- 17. 無法將javascript對象轉換爲json
- 18. 爲什麼要比較null時將對象轉換爲對象?
- 19. 爲什麼NumPy將對象轉換爲浮動對象?
- 20. 將AngularFire的firebaseListObservable對象轉換爲純文本對象
- 21. 對象對象沒有方法
- 22. 有沒有辦法將對象方法自動轉換爲外部函數?
- 23. Javascript:將對象的對象轉換爲對象數組
- 24. 將PHP數組轉換爲Javascript對象console.log後沒有數組
- 25. 將方法轉換爲對象c#
- 26. Dlang - 有沒有將對象嵌入對象的方法?
- 27. 將JSONObject轉換爲域對象的最佳方法是什麼?
- 28. 爲什麼不將JavaScript中的對象轉換爲JSON並返回該對象?
- 29. 將Javascript對象轉換成jquery對象?
- 30. 無法將大型Javascript對象轉換爲C#對象
它看起來像JSON.stringify也忽略「類屬性」 – Qrilka 2013-02-21 11:58:27