代码之家  ›  专栏  ›  技术社区  ›  Isaac

自定义指令内的角度UI指令

  •  1
  • Isaac  · 技术社区  · 7 年前

    Similar question but the question isn't sufficiently answered

    在下面的代码中,为什么不 uib-datepicker-popup 变成一个有角度的UI日期选择器?

    我是否缺少某个指令的标志/编译选项?

    这是 datepicker-popup Angular UI文档中的示例,修改为位于指令内。注意它是如何 作品 与控制器一起使用时 不起作用 在我的指令示例中。

    angular.module('ui.bootstrap.demo', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);
    angular.module('ui.bootstrap.demo').directive('timeScale',()=>({
      template:  `
      <h1>Scope:</h1>
      <ul>
        <li>format: {{format}}</li>
        <li>dt: {{dt}}</li>
        <li>popup: {{popup}}</li>
        <li>dateOptions: {{dateOptions}}</li>
      </ul>
      <input type="text"
        class="form-control"
        uib-datepicker-popup="{{format}}"
        ng-model="dt"
        is-open="popup.opened"
        datepicker-options="dateOptions"
        ng-required="true"
        close-text="Close"/>
      `,
    
      link: $scope => {
    
        $scope.format = 'dd-MMMM-yyyy'
        $scope.dt = null;
        $scope.popup = {
          openend: false
        };
    
        $scope.dateOptions = {
          dateDisabled: false,
          formatYear: 'yy',
          maxDate: new Date(2020, 5, 22),
          minDate: new Date(),
          startingDay: 1
        }
      }
    }));
    <body ng-app="ui.bootstrap.demo">
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-animate.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.js"></script>
        <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <time-scale></time-scale>
    </body>
    1 回复  |  直到 7 年前
        1
  •  1
  •   I. Ahmed    7 年前

    是的,可以在指令中使用该指令。我修改了你的代码。工作正常,请检查。

    angular.module('ui.bootstrap.demo', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);
    angular.module('ui.bootstrap.demo').directive('timeScale',()=>({
      template:  `
      <h1>Scope:</h1>
      <ul>
        <li>format: {{format}}</li>
        <li>dt: {{dt}}</li>
        <li>popup: {{popup}}</li>
        <li>dateOptions: {{dateOptions}}</li>
      </ul>
      <input uib-datepicker-popup="{{format}}" type="text"
        class="form-control"
        ng-model="dt"
        is-open="popup.opened"
        datepicker-options="dateOptions"
        ng-required="true"
        close-text="Close" ng-click="open()" />
      `,
    
      link: $scope => {
    
        $scope.format = 'dd-MMMM-yyyy'
        $scope.dt = null;
        $scope.popup = {
          openend: false
        };
        $scope.open = function() {
           $scope.popup.opened = true;
        }
        $scope.dateOptions = {
          dateDisabled: false,
          formatYear: 'yy',
          maxDate: new Date(2020, 5, 22),
          minDate: new Date(),
          startingDay: 1
        }
      }
    }));
    <body ng-app="ui.bootstrap.demo">
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-animate.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.js"></script>
        <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <time-scale></time-scale>
    </body>