Использование mdDialog с ng-repeat отображает ту же информацию с первого клика - PullRequest
0 голосов
/ 07 декабря 2018

Наша команда создает приложение в ServiceNow и использует AngularJS Material.Мы создали анкету, которая позволяет пользователям вносить изменения в ответы в конце.Для вопросов, которые можно редактировать, мы пытаемся использовать mdDialog, который вызывает модальное окно, где пользователь может редактировать свои ответы.Проблема, с которой мы сталкиваемся, заключается в том, что когда пользователь щелкает, чтобы редактировать ответ, а затем закрывает этот мод, чтобы открыть другой ответ для редактирования, модал открывает первый ответ каждый раз.Мы не можем закрыть эту область, чтобы открыть другую.

В нашем HTML у нас есть карандашный глифик, который имеет щелчок мыши для функции editQuestionFnct:

<td rowspan="2" style="color: #979797; padding-right: 15px; cursor: pointer;" ng-click="editQuestionFnct(item.quest_id)"><span class="glyphicon glyphicon-pencil" title="Edit Answer" style="padding-right: 5px;"></span></td>

Этот editQuestionFnct передает несколько элементов в функцию showPrerenderedDialog, которая генерирует модальные:

$scope.editQuestionFnct = function(val){
        $scope.editWidget = {};
        spUtil.get("gateway_questionnaire_widget", {//call new instance of this widget
            task_id: $scope.data.task_id,
            quest_id: val,
            request: 'edit',
            taskTable: $scope.data.task_table,
            questionnaire_table: $scope.params.questionnaireTable,
            serviceID: $scope.params.serviceID,
            refID: $scope.params.refID,
            taskCompleted: false,
            editRequest: true
        }).then(function(response) {
            $scope.editWidget = response;//var to hold widget response to display in modal
            $scope.showPrerenderedDialog('#editQuestion');
        });
    }

Функция showPrerenderedDialog рендерит модальные:

$scope.showPrerenderedDialog = function(name) {
    $mdDialog.show({
        contentElement: name,
        parent: angular.element(document.body),
        clickOutsideToClose:true
    });
};

Вот шаблон md-диалога:

<div style="visibility: hidden">
    <div class="md-dialog-container" id="editQuestion">
      <md-dialog style="background-color: #ffffff;" aria-label="edit dialog">
        <md-toolbar style="background-color: #022C68; width: 100%;">
          <h1 class="md-toolbar-tools" style="color: #ffffff;">Edit Response</h1>
        </md-toolbar> 
        <md-dialog-content style="background-color: #ffffff;">
          <!--<div id="editQuestDiv" style="min-width: 700px;">-->
            <sp-widget widget="editWidget"></sp-widget>
          <!--</div>-->
        </md-dialog-content>
        <md-dialog-actions layout="row">
          <span flex></span>
          <md-button ng-click="closeDialog()" class="md-primary md-raised">
            Close
          </md-button>
        </md-dialog-actions>
      </md-dialog>
    </div>

Чего мне не хватает в приведенном выше кодечтобы я мог открыть один модал для конкретного вопроса, а затем открыть другой модал с другим вопросом?Спасибо.

...