TypeError:providedScope。$ new不是函数 - angular bootstrap模态

时间:2017-01-07 14:13:16

标签: angularjs angular-ui-bootstrap bootstrap-modal meanjs

我一直关注官方指南here,但仍然收到错误消息。 GitHub上的用户遇到了同样的问题,但没有提到它是如何解决的,只是他的代码中有一个错误调用了他的工厂而且我无法从他的{{3 }}

控制器:

function ActivitiesController($scope, $state, $window, Authentication, activity, $uibModal, $uibModalInstance) {
    var vm = this;

    vm.authentication = Authentication;
    vm.activity = activity;
    vm.openModal = openModal;
    vm.okOnModal = okOnModal;
    vm.cancelOnModal = cancelOnModal;

    function openModal() {
        $uibModal.open({
            template: "<div class='modal-header'>"
                        + "<h3 class='modal-title' id='modal-title'>Friends</h3>"
                    + "</div>"
                    + "<div class='modal-body list-group' id='modal-body'>"
                        + "<a ng-repeat='friend in vm.friends' class='list-group-item'>"
                            + "<img class='friend-user-profile-picture' ng-src='{{ friend.friend.profileImageURL }}' alt='{{ friend.friend.displayName }}'>"
                            + "<h4 class='list-group-item-heading' ng-bind='friend.friend.displayName'></h4>"
                            + "<small class='list-group-item-text' ng-bind='friend.friend.username'></small>"
                            + "<p class='list-group-item-text' ng-bind='friend.friend.email'></p>"
                            + "<input type='checkbox'>"
                        + "</a>"
                    + "</div>"
                    + "<div class='modal-footer'>"
                        + "<button class='btn btn-primary' type='button' ng-click='vm.okOnModal()'>OK</button>"
                        + "<button class='btn btn-warning' type='button' ng-click='vm.cancelOnModal()'>Cancel</button>"
                    + "</div>",
            size: 'lg',
            scope: vm
        });
    }

    function okOnModal() {
        $uibModalInstance.close();
    }

    function cancelOnModal() {
        $uibModalInstance.dismiss('cancel');
    }
}

查看:

<button class="btn btn-primary btn-lg" ng-click="vm.openModal()">Share with...</button>

错误在ui.bootstrap-tpls处:

var modalScope = providedScope.$new();

依赖关系:

  • Angular:1.4.8 (从0.3升级)
  • Angular-bootstrap:2.4.0 (从0.13.4升级)
  • Bootstrap:3.3.7
  • MEAN.JS:0.4.2

阅读MEAN.JS文档,0.4.2使用不支持0.13.4的angular-ui $uibModal。由于不支持它,这就是我升级到2.4.0的原因。没有提到MEAN.JS 0.4.2不支持angular-ui 2.4.0,但这可能是潜在的原因吗?


修改

我已经排除它依赖于依赖版本,因为我已经改回了默认版本的附带版本&#39; 0.4.2&#39;在MEAN.JS堆栈中(所以使用$modal而不是$uibModal,我得到了类似的错误:

  

TypeError :( modalOptions.scope || $ rootScope)。$ new不是函数

1 个答案:

答案 0 :(得分:9)

提供

vm作为模态的父范围。这就是问题所在,因为vm不是范围。它是一个控制器实例和当前作用域上的对象(如果使用controllerAs语法)。

vm不应与$scope互换。它应该是:

scope: $scope