【问题标题】:ui.bootstrap modal loading html but not showing anythingui.bootstrap 模态加载 html 但不显示任何内容
【发布时间】:2014-09-20 19:27:32
【问题描述】:

它的加载打开模式和加载模板指定。但没有显示任何内容。

在这里查看演示:http://demo.hupp.in/food-admin

转到 [产品] 并搜索 EnegiKcal >= 3500。然后单击管理。它将打开弹出窗口,但未加载模板内容。

我注意到的另一件事是它有时会为模板返回 HTTP 304

这就是我打开模态的方式:

/** Open Modal For add edit tags */
$scope.open = function (productId) {

    var modalInstance = $modal.open({
        templateUrl: 'views/some.html',
        controller: tagsModalInstanceCtrl,
        size: 'lg'
    });

    modalInstance.result.then(function (msg) {

    }, function () {
        // $log.info('Modal dismissed at: ' + new Date());
    });

};  

var tagsModalInstanceCtrl = function ($scope, $modalInstance) {

    $scope.ok = function () {
        $modalInstance.close("hi");
    };

    $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
    };
};

这是模板代码:

<div class="modal-header">
   <h3 class="modal-title">I'm a modal!</h3>
</div>
<div class="modal-body">
   <h3>Well, Hello there!</h3>
</div>
<div class="modal-footer">
    <button class="btn btn-primary" ng-click="ok()">OK</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>

【问题讨论】:

  • 您的 URL/链接指定错误
  • 2 件事:1. 向我们展示更多上下文(如何打开模式等)2. 尝试在 plnkr 或类似文件中重现它。
  • @arturgrzesiak : 添加了模态打开的代码。

标签: angularjs angular-ui-bootstrap


【解决方案1】:

好吧,这很奇怪,但您的模板似乎基于https://github.com/angular-ui/bootstrap/blob/master/template/modal/window.html的主分支

以及标签 0.11 上的来源。

https://github.com/angular-ui/bootstrap/blob/0.11.0/src/modal/modal.js

当您在控制台中键入 $('.modal-content') 时可见,您会看到它需要一个 modal-transclude 指令,但在源代码中没有该指令的痕迹。因为,在 0.11 上,它直接使用 ng-transclude 指令,它是 angular 的一部分。

所以,您的代码是正确的,但 lib 不正确,请尝试检索它的正确版本(也许他们的 repo 的最后一个版本已损坏)

【讨论】:

  • 正是我遇到的问题以及我在回答的评论中所说的。升级到 bootstrap css v3.1.1 和 ui-bootstrap-tpls-0.11.0.js 解决了这个问题,但 Shreejibawa 说这对他没有帮助。
  • 我已经尝试过升级.. IxDay 所说的似乎是正确的。让我也试试。尽快通知您。
  • 我在 Angular-UI-Bootstrap 的多个版本中都有过这种体验,一直到版本 0.5。我发现使其不再出现的唯一可靠方法是在 CSS 中破解它。
【解决方案2】:

事实上,我在切换到 angularjs v1.2 时确实遇到了类似的问题。以前的工作对话框没有显示,就像你的一样。必须将结构更改为看起来像这样才能使其再次可见:

<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <div class="row">
                <div class="col-lg-9">
                    <h3>{{header}}</h3>
                </div>
            </div>
        </div>
        <div class="modal-body">
            <form name = "kontoForm" szp-focus="sifra">
                <!-- Šifra -->
                <szp-input id="sifra" text="Šifra" place-holder="šifra" value="konto.sifra" required="!konto.sifra"></szp-input>
                <!-- Naziv -->
                <szp-input id="naziv" text="Naziv" place-holder="naziv" value="konto.naziv" required="!konto.naziv"></szp-input>
            </form>
        </div>
        <div class="modal-footer">
            <button class="btn btn-primary" ng-hide="!kontoForm.$valid || (mode == 'edit')" ng-click="okContinue()">OK i nastavi</button>
            <button class="btn btn-primary" ng-hide="!kontoForm.$valid" ng-click="ok()">OK i zatvori</button>
            <button class="btn btn-warning" ng-click="cancel()">Odustani</button>
        </div>
    </div>
</div>

我必须用模态内容类将所有内容包装在一个 div 中以使其工作。

【讨论】:

  • 我必须做的另一件事是更改为 bootstrap css v3.1.1 和 ui-bootstrap-tpls-0.11.0.js。试试这个。它解决了我的问题。
  • 如果您正在获取 http 304(未更改),那么您的 html 正在从缓存中加载(始终从缓存中获取 html 文件并且不会反映更改)。尝试在您的 html 中添加一些背景,以查看是否反映了更改。要在 chrome 中强制重新加载,请打开 chrome 开发人员(F12 功能键)并按 shift 刷新页面。
  • 尝试清空浏览器缓存。
  • 这解决了我的问题。谢谢
【解决方案3】:

include .map 文件用于您的 /js 文件夹中的 jquery 和 angular。可能会有所帮助

【讨论】:

    【解决方案4】:

    我也因某种原因断断续续地经历过这种情况。

    我通过添加 CSS 语句解决了这个问题,在通过 Chrome 的工具进行检查后,我发现由于某种原因,模态显示仍然设置为隐藏。

    .modal {
        display: block;
    }
    

    【讨论】:

      【解决方案5】:

      看看这个链接。

      vm_main.showModal = {
              mostrarErrores : false,
              showModal : function(jsonError) {
                  var options={
                      tituloModal: jsonError.titleModal,
                      textoPrincipal: jsonError.mainMessage,
                      textoBtnAceptar: "Aceptar",
                      accionBtnAceptar: "vm_popup.cerrarPopup()",
                  };
                  commonPopUpService.getDisclaimerGeneric($scope, 'commonPopUpController', options);
              }
          };
      

      http://plnkr.co/edit/EYDEG5WSmNwxQflsB21T?p=preview

      我认为会帮助您了解如何将简单的动态 html 作为模态加载。

      问候

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 1970-01-01
        相关资源
        最近更新 更多