【问题标题】:UI Bootstrap Datepicker Popup not working with Modal and ControllerAsUI Bootstrap Datepicker Popup 不适用于 Modal 和 ControllerAs
【发布时间】:2015-09-22 20:30:57
【问题描述】:

我在这里看到了一个类似的问题,答案似乎是管理日期选择器是否打开的变量应该在父范围内。我以为我已经在这里完成了,但它仍然无法正常工作。我的代码和我见过的所有其他代码之间的区别在于我使用控制器,而其他人都使用 $scope。这应该如何与控制器一起使用?

Full Plnkr Here

这里是主页

<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');    </script>
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <link rel="stylesheet" href="style.css" />

    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular.min.js" data-semver="1.4.6"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.1/ui-bootstrap-tpls.min.js"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl as main">
    <button class="btn btn-primary" ng-click="main.openModal()">Open Modal</button>
  </body>

</html>

这里是模态

<div class="modal-header">
  {{modal.title}}
</div>
<div class="modal-body">

  <p class="input-group">
    <input type="date" 
        class="form-control" 
        ng-model="modal.dt" 
        is-open="main.opened" 
        close-text="Close" />

    <span class="input-group-btn">
      <button type="button" class="btn btn-default" ng-click="main.opened = true">
        <i class="glyphicon glyphicon-calendar"></i>
      </button>
    </span>
  </p>

</div>

这里是控制器

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

app.controller('MainCtrl', function($modal) {
var main = this;

  main.openModal = function() {
    var modalInstance = $modal.open({
      templateUrl: 'modal.html',
      controller: 'ModalInstanceCtrl as modal',
      size: 'sm'
    });
  };
});


app.controller('ModalInstanceCtrl', function($modalInstance) {
    var modal = this;

    modal.title = 'Modal Title';
});

【问题讨论】:

    标签: javascript angularjs angular-ui-bootstrap bootstrap-modal bootstrap-datepicker


    【解决方案1】:

    您忘记了输入元素上的datepicker-popup 属性:

    <input type="date" datepicker-popup
                class="form-control" 
                ng-model="main.dt" 
                is-open="main.opened" 
                close-text="Close" />
    

    另外,您需要将以下代码添加到您的ng-click 中,以阻止单击事件传播到按钮的父元素(单击父 div 将立即关闭日期选择器弹出窗口):

    $event.preventDefault(); $event.stopPropagation();
    

    例如

    ng-click="$event.preventDefault(); $event.stopPropagation(); main.opened = true"
    

    如果您愿意,也可以将其放入方法中。

    Updated Plunker

    【讨论】:

    • 正是我需要的! (y)
    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2017-02-12
    • 2013-03-19
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多