AngularJS中的控制器转换为控制器

A controller into a controller in AngularJS

本文关键字:控制器 转换 AngularJS      更新时间:2023-09-26

我已经在使用Angular Bootstrap Calendar了,它运行得很好。我添加了一个显示模态的按钮,这样我就可以使用ui.bootstrap.datepicker.添加一个新事件

当模式弹出时,我得到以下控制台消息:

"Error: [ng:areq] http://errors.angularjs.org/1.4.3/ng/areq?p0=DatepickerDemoCtrl&p1=not%20a            1.#QNAN0unction%2C%20got%20undefined

以下是我的plunker(index.html)中的代码示例

<body ng-cloak="" ng-app="demo">
    <div id="demo" ng-controller="MainCtrl as vm" class="row">
    <button class="btn btn-primary pull-right" ng-click="vm.eventCreateClicked(vm.events)">Add new event</button>
    <mwl-calendar> </mwl-calendar>    --> Calendar defined in here      

    <div ng-app="app" ng-controller="DatepickerDemoCtrl">
    <script type="text/ng-template" id="modalCreateEventContent.html">
      <div class="modal-body" id="modalEventCreate">
      </div>
    </script>
    </div> <!-- ng-controller -->
</div>        
</body>

My Add new event按钮调用demo.js 中的eventCreateClicked函数

嵌套的应用程序在Angular中是可行的,但不是现成的,通常也不推荐使用。这个案子也不例外。嵌套的ng-app在这里也不会造成任何危害,只是会被忽略。

DatepickerDemoCtrl属于ui.bootstrap.demo模块(而非app),因此ui.bootstrap.demo模块应加载在demo模块中:

angular
  .module('demo', ['mwl.calendar', 'ui.bootstrap', 'ngTouch', 'ngAnimate', 'ui.bootstrap.demo'])

您已经嵌套了ng应用程序。这在AngularJS中是不允许的。一个页面上可以有多个相邻的应用程序,但必须显式引导它们。请参阅此答案