2015-07-29 5 views
0

У меня есть страница с полимерами, которая должна прочитать некоторые json из веб-службы. Она имеет дело с 3-х различными таблицами:Помощник по связыванию с полимером

projects will come from a url like api/users/1/projects/1: 

fields: 
    project_id, project_name, project_description, project_deadline, 
    project_total_hours 

Projects data: 
    1,'ABC Corp Web Site','Site Maintenance','2015-12-31',9 


tasks will come from a url like api/users/1/projects/1/tasks 

fields: 
    task_id, task_name, project_id(fk) 

Tasks data: 
    1,'Update site with new style',1 
    2,'Fix tables on contact,about us and bio pages',1 


task_details will come from a url like like api/users/1/projects/1/tasks/1 

fields: 
    task_det_id, task_det_desc, task_id(fk) 

Task_details data: 
    1,'applied style to homepage',1 
    2, 'applied style to privacy page',1 
    2, 'applied style to contact page',1 
    3, 'fixed main table on contact page',2 

Что мне нужно Отображаемое это:

Project name 
(other project details here) 
    Update Site with New Style 
     applied style to homepage 
     applied style to privacy page 
     applied style to contact page 
    Fix tables on contact,about us and bio pages 
     fixed main table on contact page 

У меня есть URL, который возвращает данные для одного проекта и вывода I, что на мою страницу в йоте -повторение. Тогда в том, что у меня есть еще один, который захватывает задачи, которые связаны с этим проектом, и отображает их и до сих пор так хорошо: Ниже приведен код, который я использовал, чтобы сделать это:

<paper-material elevation="5" class="card"> 
<center> 
<template is="dom-bind" id="project"> 
<iron-ajax url="<?echo $projecturl?>" last-response="{{projectdata}}" auto></iron-ajax> 
    <template is="dom-repeat" items="[[projectdata]]" as="project"> 
     <div class="primary">[[project.project_name]]</div> 
     <div class="primary">[[project.project_description]]</div> 
     <div class="secondary">Project Deadline:</div> 
     <div class="secondary dim">{{_getDeadline(project.project_deadline, project.project_deadline_time)}}</div> 
     <div class="secondary">{{_getTotalHours(project.project_total_hours)}}</div> 
     <paper-button id="my-button" raised onclick="">Create Task</paper-button> 
     <hr> 
     <iron-ajax url="<?echo $tasksurl?>" last-response="{{taskdata}}" auto></iron-ajax> 
     <template is="dom-repeat" items="[[taskdata]]" as="taskitem"> 
      <div>[[taskitem.task_name]]</div> 
     </template> 
    </template> 
</template> 
</center> 

И мой скрипт (просто присоединяет некоторые поля с текстом):

<script> 
    var project = document.getElementById('project'); 
    project._getProject = function (url) { 
     return 'project.php?id=' + url 
    } 
    project._getTaskid = function (tid) { 
     return 'task.php?id=' + tid; 
    } 
    project._getTaskurl = function (tid) { 
     return '<?echo $tasksurl?>' + '/' + tid; 
    } 
    project._getDeadline = function (deadline, deadlinetime) { 
     var timeString = deadlinetime; 
     var H = +timeString.substr(0, 2); 
     var h = H % 12 || 12; 
     var ampm = H < 12 ? "AM" : "PM"; 
     timeString = h + timeString.substr(2, 3) + ampm; 
     var d = deadline.slice(0, 10).split('-'); 
     formatteddate=d[1] +'/'+ d[2] +'/'+ d[0]; // 10/30/2010 
     return formatteddate + ' at ' + timeString; 
    } 
    project._getTotalHours = function (totalhours) { 
     return 'Total Hours to Date: ' + totalhours; 
    } 
</script> 

Который отображающий:

Project name 
(other project details here) 
    Update Site with New Style 
    Fix tables on contact,about us and bio pages 

до сих пор так хорошо ...

Теперь моя проблема возникает, когда дело с разделом Сведения о задании я в настоящее время имею следующий код с деталями раздела дополнительными добавлен:

<template is="dom-repeat" items="[[projectdata]]" as="project"> 
    <div class="primary">[[project.project_name]]</div> 
    <div class="primary">[[project.project_description]]</div> 
    <div class="secondary">Project Deadline:</div> 
    <div class="secondary dim">{{_getDeadline(project.project_deadline, project.project_deadline_time)}}</div> 
    <div class="secondary">{{_getTotalHours(project.project_total_hours)}}</div> 
    <paper-button id="my-button" raised onclick="">Create Task</paper-button> 
    <hr> 
    <iron-ajax url="<?echo $tasksurl?>" last-response="{{taskdata}}" auto></iron-ajax> 
    <template is="dom-repeat" items="[[taskdata]]" as="taskitem"> 
    <div>[[taskitem.task_name]]</div> 

    <iron-ajax url="{{_getTaskurl(taskitem.task_id)}}" last-response="{{taskdetaildata}}" auto></iron-ajax> 
    <template is="dom-repeat" items="[[taskdetaildata]]" as="taskdetailitem"> 
     <div>[[taskdetailitem.task_det_desc]]</div> 

    </template> 
</template> 

Обратите внимание, что мне нужно, чтобы получить task_id из текущей связанной задачи, чтобы использовать для URL-адреса, чтобы получить детали этой задачи: {{_getTaskurl (taskitem.task_id)}}

Результаты, которые я фактически постоянно меняю каждый раз при обновлении: иногда Я получаю:

Project name 
(other project details here) 
    Update Site with New Style 
     fixed main table on contact page 
    Fix tables on contact,about us and bio pages 
     fixed main table on contact page 

другие времена я получаю

Project name 
(other project details here) 
    Update Site with New Style 
     applied style to homepage 
     applied style to privacy page 
     applied style to contact page 
    Fix tables on contact,about us and bio pages 
     applied style to homepage 
     applied style to privacy page 
     applied style to contact page 

и другие времена, я просто получаю:

Project name 
(other project details here) 
    Update Site with New Style 
    Fix tables on contact,about us and bio pages 

Кто-нибудь знает, как я могу это сделать, и получить желаемые результаты? Я играю с ним в течение дня или около того и не могу заставить его работать, и я просто собираюсь его отрезать и просто использовать php и PDO для прокрутки и отображения необходимых мне данных. Я уверен, что, поскольку я - полимерный noob, это то, что я игнорирую или не понимаю правильно. Я чувствовал, что это должно сработать, я имею в виду, что после того, как все задачи отображаются в деталях под деталями проекта, я решил, что если бы я сделал детали задачи так же, как должен работать, но нет.

ответ

0

Похоже, вы столкнулись с состоянием гонки размещения контента последнего ответа.

Вам нужно будет асинхронно думать о решении.

Я бы попытался сделать iron-ajax вызовом обработчика, чтобы обновить другие связанные переменные. Here is my JSBin I hacked together that demonstrates the solution...

Я заменяю должности/комментарии вместо ваших задач, но идея такая же.

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