2015-07-19 2 views
0

Я новичок в полимере, и я пытаюсь создать настраиваемую службу, которая принимает запрос и отправляет ответ. Тем не менее, я столкнулся с проблемой доступа к объекту ответа, хотя я вижу, что объект устанавливается на странице службы.Polymer 1.0 Связывание данных и доступ к объекту ответа ajax

Пожалуйста, смотрите код услуги: X-custom.html

<link rel="import" href="bower_components/polymer/polymer.html"> 
 
<link rel="import" href="bower_components/iron-ajax/iron-ajax.html"> 
 

 
<dom-module id="x-custom"> 
 
<style> 
 
</style> 
 
<template> 
 
<iron-ajax 
 
     id="ajax" 
 
     url="" 
 
     handle-as="json" 
 
     on-response="hresponse" 
 
     debounce-duration="300"> 
 
</iron-ajax> 
 

 
</template> 
 
<script> 
 

 
    Polymer({ 
 

 
    is: 'x-custom', 
 
\t properties: { 
 
     user: String, 
 
     responseData:{ 
 
     type:Object, 
 
     notify:true 
 
     } 
 

 
    }, 
 

 
attached: function() { 
 
     this.$.ajax.url = "http://myapitesing/api/users/"+this.user; 
 
     this.$.ajax.generateRequest(); 
 
    }, 
 

 
    hresponse: function(request) { 
 
     // Make a copy of the loaded data 
 
     respObj = request.detail.response; 
 
     if(respObj){ 
 
      //console.log(respObj); 
 
      this.responseData = respObj; 
 
      alert(respObj.email); 
 
     } 
 
     } 
 

 
    }); 
 

 
</script> 
 
</dom-module>

Теперь посмотрим, что элемент доступа к сервису: пользовательский details.html

<link rel="import" href="bower_components/polymer/polymer.html"> 
 
<link rel="import" href="x-custom.html"> 
 

 
<dom-module id="user-details"> 
 
    <style> 
 

 
    </style> 
 

 
<template> 
 
    
 
     <x-custom user="6f299d3cb8214c079433d7bb98a4a5ed" responseData={{responseData}} ></x-custom> 
 
      
 
      <h1>{{responseData.email}}</h1> 
 
      
 
</template> 
 
    <script> 
 
     Polymer({ 
 
       is: 'user-details' 
 
      }); 
 
    </script> 
 
</dom-module>

Теперь я называю пользовательские данные элемента в моей idex.html следующим образом

<user-details></user-details>

Он успешно извлекает детали, однако, {{}} responseData.email не показывает строку электронной почты на странице user-details.html.

Если я попытаюсь получить одно и то же значение на странице x-custom.html, я могу увидеть значение responseData.email. (см. предупреждение в функции hresponse внутри x-custom.html)

Пожалуйста, помогите мне, и дайте мне знать, если я где-нибудь пропажу.

+0

Проверьте это руководство по связыванию данных, возможно, вам нужно создать пользовательский элемент для передачи данных в атрибуте - https://www.youtube.com/watch?v=9rXJ5lJ5_TA – Tasos

+0

Спасибо, но это учебник для полимера 0,5. Думаю, это не поможет. – RosAng

ответ

2

Примечания я не принял и ваши элементы и испытанные, но я думаю, что ваша проблема в вашей <user-details> линии, где вы делаете:

<x-custom user="6f299d3cb8214c079433d7bb98a4a5ed" responseData={{responseData}} ></x-custom> 

Если только это опечатка, это, безусловно, не является обязательным для responseData, потому что ваш атрибут в верблюжьего. Вам нужно сделать:

<x-custom user="6f299d3cb8214c079433d7bb98a4a5ed" response-data={{responseData}} ></x-custom> 

Вам также может понадобиться, чтобы сделать responseData в <x-custom> собственность с notify: true; Я всегда забываю.

+0

Это сработало! Проблема была с переменной верблюжьего случая – RosAng

+0

Прохладный, тогда вы должны принять ответ. – mbunit

0

Если вы пытаетесь извлечь данные путем расширения от другого пользовательского элемента, то в настоящее время Polymer 1.0 не поддерживает расширение пользовательских элементов. Вы можете найти это показано в документации по этой ссылке: https://www.polymer-project.org/1.0/docs/devguide/registering-elements.html#type-extension

+0

Я думаю, что я не могу уточнить свой вопрос здесь: Я не пытаюсь расширить элемент. Я пытаюсь создать элемент службы, на котором я передам вход для json url, ответ на который я хочу отобразить на другой странице, а не страницу, на которой определен элемент службы. пример: <сервис-элемент пользовательского = "идентификатор пользователя" responseData = {{responseData}}> Как я могу использовать данные ответа на другой странице? Я знаю, что это возможно с полимером 0,5 – RosAng

Смежные вопросы