Polymer 1.x: использование iron-ajax внутри пользовательского поведения

Я строю собственное поведение. Назови это MyBehaviors.MySpecialBehavior,

Но мне нужно получить данные, которые хранятся локально в файле JSON под названием my-data.json,

Как я могу сделать это в моем поведении? Я пытаюсь импортировать iron-ajax но я не могу думать о том, как получить доступ к его методам или свойствам.

мой-специального behavior.html
<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html">

<script>
  var MyBehaviors = MyBehaviors || {};
  MyBehaviors.MySpecialBehaviorImpl = {
    // Methods go here that rely on data at my-data.json
  };

  MyBehaviors.MySpecialBehavior = [
    MyBehaviors.MySpecialBehaviorImpl,
  ];
</script>
мой-data.json
{
  "important": "data",
  "j": 5,
  "o": "N",
  "goes": "here"
}

2 ответа

Решение

Вы можете создавать элементы программно. Посмотрите, как сам iron-ajax делает это для внутреннего использования iron-запроса:

https://github.com/PolymerElements/iron-ajax/blob/master/iron-ajax.html

Ссылаясь на ваш вариант использования, пользователь a1626 создал этот фрагмент:

var ajax = document.createElement('iron-ajax');
ajax.contentType = "application/json";
ajax.handleAs = "json";
ajax.url = <url goes here>
ajax.method = 'get';
ajax.addEventListener('response', function (event) {
    //response handler                  
});
ajax.generateRequest();

Вы можете получить доступ к данным JSON с ajax.lastResponse внутри добавленного слушателя событий.

var ajax = document.createElement('iron-ajax');
ajax.contentType = "application/json";
ajax.handleAs = "json";
ajax.url = <url goes here>
ajax.method = 'get';
ajax.addEventListener('response', function (event) {
    //response handler
    console.log('ajax', ajax.lastResponse);            
});
ajax.generateRequest();
Другие вопросы по тегам