2016-08-09 4 views
0

У меня есть Ember Adapter, и он подключается к моему api для передачи данных в модели и для хранения. Проблема заключается в том, что адрес моей api может измениться из-за «причин». Как я могу обновить свой адаптер, чтобы изменения в хранилище обновили хост? Даже если я изменю хост, адаптер будет использовать новый хост в следующий раз, когда ему понадобится HTTP-запрос?Обновление Ember Adapter Host

Вот что я пытался ...

const ApplicationAdapter = RestAdapter.extend({ 
     namespace: 'api', 
     host: "0.0.0.0" 
    }); 

    ApplicationAdapter.reopenClass({ 
     updateHost(host) { 
      console.log("Here: " + host); 

      //Both of these throw an error probably because host is not static 
      //this.set('host', host); I attempted this first 
      //this.host = host; Then I attempted this way 
     } 
    }); 

export default ApplicationAdapter; 

У меня есть наблюдатель, который наблюдает при изменении магазина, а затем вызывает статический метод ApplicationAdapter.

export default Model.extend({ 
    ip1: attr('string'), 
    ip2: attr('string'), 
    ip1Observer: Ember.observer('ip1', function() { 
     let newValue = this.get('ip1'); 
     ApplicationAdapter.updateHost(newValue); 
    }), 
    ip2Observer: Ember.observer('ip2', function() { 
     let newValue = this.get('ip2'); 
     ApplicationAdapter.updateHost(newValue); 
    }) 
}); 
+0

Помните, что вы можете написать адаптор модели, если потребуется. – kumkanillam

ответ

0

Мне удалось выяснить, как решить мою проблему. Я смог легко обновить URL-адрес адаптера с помощью функции buildURL и использовать утилиту для захвата из ip, требуемого из хранилища. Мне не нужны наблюдатели или какие-либо статические атрибуты. В результате получилось что-то вроде этого ...

const ApplicationAdapter = RestAdapter.extend({ 
     namespace: 'api', 
     buildURL(): function { 
      return utility.ip() + this.get('namespace'); 
     } 
}); 
Смежные вопросы