1

html5Mode(true).

在单击第一次单击时,不会出现launch demo modalurl 更改为模态。/#myModal

再次单击时launch demo modal,出现模式。

在正常模式下($locationProvider.html5Mode(false);模式出现在第一次单击时。

如何使模态出现在第一次单击中?

标准模式代码:-

<!-- Button trigger modal -->
  <a data-toggle="modal" href="#myModal" class="btn btn-primary btn-lg">Launch demo modal</a>

  <!-- Modal -->
  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">

        <div class="modal-body">
          ...
        </div>

      </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
  </div><!-- /.modal -->

角代码: -

var myApp = angular.module('myApp', []);

myApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
  $routeProvider.
      when('/', {
        templateUrl: 'partials/home',
        controller: 'homePage'
      }).
      otherwise({redirectTo: '/login'});

    $locationProvider.html5Mode(true);
}]);

经检查,页面在第一次单击时刷新,launch demo modal但刷新不会通过服务器进行。Angular 做到了这一点。同样,在第二次单击时,angular 也会管理 REST 请求并显示模态。

PS:- 我想演示这个问题,但plunkr在 html5Mode 下不起作用。

据我所知,我不能向jsfiddle添加额外的 html 页面,你不能。此外我不确定它是否支持$locationProvider.html5Mode(true);模式。

我该去哪里展示错误?

4

1 回答 1

19

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

它没有像 Bootstrap 示例中那样使用 data-toggle 属性,而是使用ng-click指令来触发控制器中实例化模式的函数。

我直接使用了 Bootstrap ( Bootstrap Modal Live Demo ) 中的模态示例,并将其改编为 AngularUI ( AngularUI Modal Demo ) 中的 javascript 示例。

使用的版本

  • AngularJS 1.0.8
  • AngularUI 0.6.0
  • 引导程序 3.0.0

结果

在此处输入图像描述

index.html(部分)

<div ng-controller="ModalDemoCtrl">
    <button class="btn" ng-click="open()">Open me!</button>
    <div ng-show="selected">Selection from a modal: {{ selected }}</div>
</div>

模态的.html

<div class="modal-dialog">
  <div class="modal-content">
    <div class="modal-header">
      <button type="button" class="close" ng-click="cancel()">&times;</button>
      <h4 class="modal-title">Modal title</h4>
    </div>
    <div class="modal-body">
      <ul>
        <li ng-repeat="item in items">
          <a ng-click="selected.item=item">{{item}}</a>
        </li>
      </ul>
      <div>Selected Item: {{selected.item}}</div>
    </div>
    <div class="modal-footer">
      <button type="button" class="btn btn-default" ng-click="cancel()">Close</button>
      <button type="button" class="btn btn-primary" ng-click="ok()">Save changes</button>
    </div>
  </div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->

应用程序.js

angular.module('plunker', ['ui.bootstrap']);

var ModalDemoCtrl = function ($scope, $modal, $log) {

  $scope.items = ['item1', 'item2', 'item3'];

  $scope.open = function () {

    var modalInstance = $modal.open({
      templateUrl: 'modal.html',
      controller: ModalInstanceCtrl,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
    });

    modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem;
    }, function () {
      $log.info('Modal dismissed at: ' + new Date());
    });
  };
};

var ModalInstanceCtrl = function ($scope, $modalInstance, items) {

  $scope.items = items;
  $scope.selected = {
    item: $scope.items[0]
  };

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };

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

此外,模态可见性还有一个小的 css 修复。

.modal {
    display: block;
}
于 2013-10-05T23:05:06.267 回答