$ uibModal首次点击时无法加载正确的内容

时间:2018-12-18 23:41:34

标签: angularjs modal-dialog servicenow angular-templatecache

我正在ServiceNow中工作,并试图使用$ uibModal打开一个包含嵌入式小部件的模式窗口。第一次单击时,该模式会很好地打开,但是此后的每次单击都需要两次单击才能加载正确的内容。我在一些站点上读到了它的原因,因为模板缓存无法清除,有些人建议不要使用脚本标签,但是我不确定如何在没有ServiceNow中的脚本标签的情况下使uibModal正常工作。有人碰到这个吗?希望获得一些有关解决此问题的建议。

这是我的客户脚本:

c.onWidget2 = function(template, task) {
    c.taskName = task.short_description;
    c.modalInstance = $uibModal.open({
        templateUrl: template,
        scope: $scope,
        size: 'lg'
    });
    spUtil.get('hrj_task_activity_scoped', {
        sys_id: task.sys_id,
        table: 'sn_hr_core_task',
        recordInfo: task.taskInfo
    }).then(function(response) {
        c.newTask2 = response;
    });
};

//closeModal for the "x" 
c.closeModal = function() {
    c.modalInstance.close();
};

这是我的HTML:

<div class="card" ng-click="c.onWidget2('newTask2',task);"></div>

<script>
    <div class="panel panel-default">
        <div class="panel-heading clearfix">
            <h4 class="panel-title pull-left">{{c.taskName}}</h4>
      <span ng-click="c.closeModal()"><i class="fa fa-times pull-right"></i></span>
    </div>
        <sp-widget widget="c.newTask2" options="c.newTaskOptions"></sp-widget>
  </div>
</script>

1 个答案:

答案 0 :(得分:1)

这里的问题是“模态中的指令”,就像这个线程中一样:

Integrating directive in Angular UI Modal

解决方案是在渲染模态后加载指令:

<Image soure={image} style={{width:200, height:200, resizeMode:'stretch'}} />