Angular Ошибка ui: $modal.open не является функцией

Я пытаюсь получить модальный вид, используя Angular -UI v0.10.0 (http://angular-ui.github.io/bootstrap/) и Angular 1.1.5, а я получите следующую ошибку:

Ошибка: $modal.open не является функцией

Я не уверен или почему я получаю эту ошибку. Вот что у меня есть...

HTML:

    <div ng-controller="ModalDemoCtrl">
        <button class="btn btn-default btn-sm" ng-click="open()">open me</button>
    </div>

JS:

app.controller('ModalDemoCtrl', ['$scope', '$modal', function ($scope, $modal) {
    $scope.open = function () {
        var modalInstance = $modal.open({
            templateUrl: 'template.html',
            controller: 'ModalInstanceCtrl', 
            resolve: {}
        });
    };
}]);

app.controller('ModalInstanceCtrl', ['$scope', '$modalInstance', function ($scope, $modalInstance) {
    $scope.ok = function () {
        $modalInstance.close();
    };
    $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
    };
}]);

Я просто пытаюсь сначала ослабить основы... как открыть его. Я довольно сильно истощил ресурсы, поэтому любая помощь будет принята с благодарностью! Спасибо!

Ответ 1

Я исправил проблему.

По-видимому, у меня был angular -strap ниже angular -ui, который переписывал angular -ui. Оба сценария явно противоречили друг другу.

Приложение, над которым я работаю, сложно, так что это было легко упустить. Однако, слово совета, придерживаться одной библиотеки и держать вещи простыми.

Спасибо всем!

Ответ 2

Эта ошибка возникает путем включения $modal unsuccess.

Убедитесь, что:

  • добавить ссылку источника между вашими angular.js и yourapp.js

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.js"></script>
    <script src="assets/js/ui-bootstrap-tpls-0.10.0.min.js"></script>
    <script src="assets/js/yourapp.js"></script>
    
  • добавить ui.bootstrap в модуль

    app = angular.module('yourApp', ['ui.bootstrap']); 
    
  • добавить $modal независимость к вашему контроллеру

    app.controller('ModalDemoCtrl', ['$scope', '$modal', function ($scope, $modal) {}]);
    

Ответ 3

Эта проблема возникает из-за различной версии angular -modal и угловых символов. Я столкнулся с такой же проблемой в angular -modalv.0.5 и получил решение i.e,

использование:

$modal({......});

Вместо:

$modal.open({......});

Например: -

 var termAndConModal = $modal({
    title: 'Info',
    controllerAs: 'termAndConModalController',
    template: '../views/partials/term_n_cond_modal.html',//;myModalContent.html',
    show: false
});
$scope.showtermAndConModal = function() {
    termAndConModal.$promise.then(termAndConModal.show);
};
$scope.showtermAndConModal();

Ответ 4

Где ваше ng-приложение? У вас должно быть приложение, на которое ссылается, в свою очередь, включает ui.bootstrap.

См. ниже plunkr.

http://plnkr.co/edit/?p=preview

Если у вас это есть и просто не отображается, попробуйте использовать последнюю версию angular. 1.1.5 довольно старый.