代码之家  ›  专栏  ›  技术社区  ›  Dave

使用mdDialog和ng repeat从第一次单击开始一直显示相同的信息

  •  0
  • Dave  · 技术社区  · 7 年前

    我们的团队正在ServiceNow中构建一个应用程序,并使用AngularJS材料。我们建立了一个问卷,允许用户在最后对答案进行编辑。对于可以编辑的问题,我们尝试使用mdDialog,它会打开一个模式窗口,用户可以在其中编辑答案。我们遇到的问题是,当用户单击以编辑答案,然后关闭该模式以打开另一个要编辑的答案时,该模式每次都会打开第一个答案。我们似乎不能关闭这个范围再打开一个。

    在我们的HTML中,我们有一个铅笔字形图标,其中有一个函数editQuestionFnct的ng click:

    <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>
    

    $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');
            });
        }
    

    showPreRenderDialog函数呈现模式:

    $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>
    

    上面的代码遗漏了什么,这样我就可以为一个特定的问题打开一个模式,然后用另一个问题打开另一个模式?谢谢。

    0 回复  |  直到 7 年前
    推荐文章