[英]In an EmberJS model, is there a better way to parse and bind to a json object as an attribute?
這用於將json對象解析並綁定為屬性(也有轉換,但這是非常基本的):
cleanCredentials: ->
creds = @get('credentials')
Object.keys(creds).forEach (key) =>
unless key in @get('selectedDriver').api_keys
delete @get('credentials')["#{key}"]
get_set: ->
key = arguments[0][0]
value = arguments[0][1]
if (arguments[0].length > 1)
@set "credentials.#{key}", value
@cleanCredentials()
@get "credentials.#{key}"
getter_setter = `function(key, value) { return this.get_set(arguments); }.property('credentials')`
apiToken: getter_setter
applicationId: getter_setter
applicationUserId: getter_setter
companyCode: getter_setter
username: getter_setter
它有效,據我了解,但是有更好的方法嗎?
IIUC,您應該定義自定義轉換:
App.RawTransform = DS.Transform.extend({
deserialize: function(json) {
return json;
},
serialize: function(object) {
return object;
}
});
App.Model = DS.Model.extend({
rawJSONobject: DS.attr('raw')
});
該解決方案將無法綁定到json字符串中的單個項目,但將監視整個json字符串...此外,還無法對其進行測試,但希望這會給您一些想法。
App.Person = Ember.Model.extend({
// json string
'jsonData' : DS.attr('string'),
// computed property
'parsedData' : function(key, value) {
// setter -- take an object and save the stringified version to the model
if (arguments.length > 1) {
this.set('jsonData', JSON.stringify(value));
}
// return the parsed json string rather than the string itself...
return $.parseJSON(this.get('jsonData'));
}.property('jsonData')
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.