简体   繁体   中英

Angular: $uibModal undefined

i have this error when i used ui.bootstrap.modal:

Error: $uibModal is undefined

Module:

    (function(angular) {
    /**
     * finanziarioTerziController
     *
     * a controller defined in the finanziarioTerziModule and using a sample service.
     */
    angular.module('finanziarioTerziModule')
        .controller('finanziarioTerziController', ['$scope', 'finanziarioTerziService', function ($scope, finanziarioTerziService) {
            'use strict';

            $scope.elencoPatrimonioTerziCollapsed = true;
            $scope.elencoPatrimonioTerzi = new Array();

            $scope.products = [];

            $scope.productToAdd = [];

            $scope.saveProduct = function (productToAdd) {
                for (var i = 0; i < productToAdd.length; i++) {
                    $scope.products.push(productToAdd[i]);
                    console.log($scope.products[i]);
                }
                $scope.reset();
            };


            $scope.reset = function () {
                $scope.productToAdd.length = 0;
            };

            $scope.remove = function (index) {
                $scope.productToAdd.splice(index, 1);
            };

            $scope.addProduct = function () {
                $scope.productToAdd.push({
                    tipologia: '',
                    descrizione: '',
                    contratto: '',
                    ctv: '',
                    possesso: ''
                });
            };

            $scope.open = function ($uibModal) {
                var modalInstance = $uibModal.open({
                    animation: $scope.animationsEnabled,
                    templateUrl:  'finanziarioTerziSearch.html' ,
                    controller: 'finanziarioTerziModule',
                    resolve: {
                        items: function () {
                            return $scope.items;
                        }
                    }
                });
            };
            open.$inject = '$uibModal';

            finanziarioTerziService.getPatrimonioTerzi().then(function (response) {

                if (response.status != '200') {
                    console.log('status diverso da 200');
                    return;
                }

                var elenco = response.data;

                for (var i = 0; i < elenco.length; i++) {
                    $scope.elencoPatrimonioTerzi.push(elenco[i]);
                }
            });
        }]);
})(angular);

template(the .html file)

<div class="modal-header">
<h3 class="modal-title">This is template 1</h3>
</div>
<div class="modal-body">
<ul>
    <li ng-repeat="item in items">
        <a href="#" ng-click="$event.preventDefault(); selected.item = item">{{ item }}</a>
    </li>
</ul>
Selected: <b>{{ selected.item }}</b></div>

Button (inside another controller)

 <button class="btn btn-default" ng-click="open()" >Cerca Prodotto</button> 

I'm try to injected $uibModel in the controller, but not work Sorry for my language, i'm italian

EDIT: in index.html

 <script src="../bower_components/jquery/dist/jquery.js"></script>
    <script src="../bower_components/angular/angular.js"></script>
    <script src="../bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
    <script src="../bower_components/angular-route/angular-route.js"></script>
    <script src="../bower_components/angular-ui-router/release/angular-ui-router.js"></script>

EDIT2: adjust ng-controller EDIT 3: in app.js

angular.module('patrimonioApp',['ngRoute', 'ui.bootstrap', 'ui.router',
    'commonModule', 'homeModule', 'finanziarioModule', 'polizzeModule', 'finanziarioTerziModule' ])
.config(['$routeProvider', function($routeProvider) {

EDIT 4: I solved but now I have a new Error

As i can make out, the order in which you have injected dependencies in your controller doesnot match the parameters list. Please correct.

angular.module('finanziarioTerziModule')
    .controller('finanziarioTerziController', ['$scope', 'finanziarioTerziService','$uibModal', function ($scope, $uibModal, finanziarioTerziService) {

$uibModal is third in injection list but second in params list. The order should be same. PFB the correct order.

angular.module('finanziarioTerziModule')
    .controller('finanziarioTerziController', ['$scope', 'finanziarioTerziService','$uibModal', function ($scope, finanziarioTerziService, $uibModal) {

Please correct the order and see if it works. I hope it does.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM