5

我在另一个 html 文件中有一个模态模板,但是在第一次加载页面后,模态窗口打开时没有内容,第二次一切正常。如何解决这个问题?

这是 plunker http://plnkr.co/edit/lw056nAaU7BfqIVZSddb?p=preview

//Open modal on main page with:
<div ng-controller="ModalDemoCtrl">
<button type="button" class="btn btn-default" ng-click="open()">Open me!</button>
<button type="button" class="btn btn-default" ng-click="open('lg')">Large modal</button>
<button type="button" class="btn btn-default" ng-click="open('sm')">Small modal</button>
<button type="button" class="btn btn-default" ng-click="toggleAnimation()">Toggle Animation ({{ animationsEnabled }})</button>
<div ng-show="selected">Selection from a modal: {{ selected }}</div>

4

2 回答 2

5

你不应该用<script type="text/ng-template" id="myModalContent.html"></script>.

ui-modal 在这里需要直接的 HTML。

如果你需要使用 ng-template,你应该在你的 index.html 中插入 ng-template 脚本标签(或其他任何地方,但它应该被加载到你的页面中)并打开你的模式template而不是templateUrl这样:

var modalInstance = $uibModal.open({
      animation: $scope.animationsEnabled,
      template: "<div ng-include src=\"'myModalContent.html'\"></div>",
      controller: 'ModalInstanceCtrl',
      size: size,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
});
于 2016-04-15T08:44:08.953 回答
0

也许您可以$templateCache在这种情况下使用从另一个文件加载模板。我不知道你为什么会遇到这个问题,但这解决了我的问题。

也许你不是在寻找这样的东西,因为这会增加 JS 文件的大小,有时这个模板永远不会被使用。

angular.module('ui.bootstrap.demo').run(['$templateCache', function ($templateCache) {

    $templateCache.put('myModalContent.html',
        'Hello World'
    );

}]);

你怎么看?

编辑:基于这个问题,@Pierre Mauui 的回答对我来说似乎更合适。

于 2016-04-15T08:41:54.403 回答