簡體   English   中英

在EmberJS模型中,是否有更好的方法來解析和綁定json對象作為屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM