Polymer 1.x: использование iron-ajax внутри пользовательского поведения
Я строю собственное поведение. Назови это MyBehaviors.MySpecialBehavior
,
Но мне нужно получить данные, которые хранятся локально в файле JSON под названием my-data.json
,
Как я могу сделать это в моем поведении? Я пытаюсь импортировать iron-ajax
но я не могу думать о том, как получить доступ к его методам или свойствам.
<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();