2

Код почти прямо из учебника ui-bootstrap. У меня есть кнопка на моей странице с нг-клик для открытия окна модального, но ошибка я получаю в Дев инструментах:

Error: [$injector:unpr] Unknown provider: $uibModalInstanceProvider <- $uibModalInstance <- modalController

и каждый клик после этого добавляет modalController к сообщению об ошибке, как

Error: [$injector:unpr] Unknown provider: $uibModalInstanceProvider <- $uibModalInstance <- modalController <- modalController

Error: [$injector:unpr] Unknown provider: $uibModalInstanceProvider <- $uibModalInstance <- modalController <- modalController <- modalController

home.js

'use strict'; 

angular.module('myApp') 
    .controller('homeCtrl', ['$q', '$state', '$timeout', '$scope', '$http', '$filter', 
    '$uibModal', function($q, $state, $timeout, $scope, $http, $filter, $uibModal){ 

$scope.open = function (size){ 
    var modalInstance = $uibModal.open({ 
    animation: $scope.animationsEnabled, 
    templateUrl: 'app/main/searchModal.html', 
    controller: 'modalController', 
    size: size, 
    resolve: { 
     items: function() { 
     return $scope.items; 
     } 
    } 
    }); 

    modalInstance.result.then(function (selectedItem) { 
    $scope.selected = selectedItem; 
    }, function() { 
    }); 
}; 
... 

modalcontroller.js

'use strict'; 

angular.module('myApp') 
.controller('modalController', ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) { 
    $scope.items = items; 
    $scope.selected = { 
    item: $scope.items[0] 
    }; 

    $scope.ok = function() { 
    $uibModalInstance.close($scope.selected.item); 
    }; 

    $scope.cancel = function() { 
    $uibModalInstance.dismiss('cancel'); 
    }; 
    $uibModalInstance.close(); 
}]); 

ответ

1

Проблема на нашем (в библиотеке) конце. Когда мы выпустили 0.14.0 и добавили все префиксы uib, мы пропустили добавление его к modalInstance. Вопрос был исправлен в 0.14.3.

Чтобы исправить эту проблему в 0.14.0 - 0.14.2, просто используйте вместо этого $modalInstance и обратите внимание, что при обновлении до 1.0 вам нужно будет изменить на $uibModalInstance, иначе код снова появится.

Here's a link к соответствующей проблеме на GitHub.

1

Все выглядит правильно. Еще одна вещи, чтобы проверить, чтобы убедиться, угловой-UI-самозагрузкой библиотека становится впрыскиваются в ваших зависимости приложений:

angular.module('myApp', ['ui.bootstrap']) 

И что вы используете версию углового-UI-загрузчике, который имеет изменение префикса. Версия 0.14.0 представила префиксы «uib», версия 1.0.0 удалила поддержку для непересекающихся компонентов. До версии 0.14.0 $ uibModalInstance был $ modalInstance.

+0

'angular.module ('MYAPP', [ 'ngCookies', 'ngResource', 'ngSanitize', 'ngAnimate', 'ui.router', 'ui.bootstrap', «умные -table ', ' nvd3 ', ' angucomplete-alt ' ]) 'являются моими зависимостями. Я использую Angular 1.4.7 и 0.14.0 ui-bootstrap, поэтому я не вижу там никаких проблем. Тот факт, что каждый клик добавляет еще один «modalController», - это то, что меня отталкивает. – heliotrope

Смежные вопросы