Ошибка получения: [$ инжектор: unpr] Неизвестный поставщик: dataServiceProvider <- DataService <- firstctrl

#angularjs #angular-services #angular-controller

#angularjs #angular-services #угловой контроллер

Вопрос:

Я новичок в angular и создаю свое первое приложение с использованием angular в нем и получаю эту ошибку. «[$инжектор:unpr] Неизвестный поставщик: dataServiceProvider <- DataService <- firstctrl»Ниже приведен мой код, для которого я получаю ошибку.

моя страница aspx:

 <asp:Content ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
    <script type="text/javascript" src="../Scripts/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
    <script type="text/javascript" src="/_layouts/15/sp.js"></script>
    <script src="../Scripts/angular.js"></script>
    <script src="../app/app.js"></script>
    <script src="../app/shared/services/dataService.js"></script>
    <script src="../app/controller/firstctrl.js"></script>
    <meta name="WebPartPageExpansion" content="full" />

</asp:Content>

<asp:Content ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server">
    Page Title
</asp:Content>

<asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server">
     <div ng-app="rootapp" ng-controller="firstctrl">
        {{first}} {{last}}
    </div>
</asp:Content>
  

App.js

 (function () {
    'use strict';

    angular
        .module('rootapp', [
            'ngRoute'
        ])
        .config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {

            $routeProvider
                .when('/', {
                    controller: 'firstctrl',
                    templateURL: ''
                })
                .otherwise({ redirectTo: '/' });
        }]);
})();
  

Контроллер JS
firstctrl.js

     (function () {
        'use strict';
        var hostweburl;
        var appweburl;
        var SPLanguage;
        var SPClientTag;
        var SPProductNumber;
        var context = SP.ClientContext.get_current();
        var user = context.get_web().get_currentUser();
        var UserDetails = "";
        var ProjectList = "";
        var queryStringValue = {};
        var defaultQueryStringVal = '';
        var ready = false;
        var digest = "";
        var UserEmailID = "";
        var ExtLog = "";
        var lineno = 0;
        var country = '';
        var ip = '';
        var city = '';
        var SettingsList = '';
        var CurrentUser;
        var btntext;
        var UID;
        var ConsolidatedValue;
        var LiceKey;
        var checkboxval;
        var HostFlag;

        angular
            .module('rootapp', [])
            .controller('firstctrl', ["$scope", "dataService", function ($scope, dataService) {

                $scope.first = "John";
                $scope.last = "Doe";

                parseQueryString();
//replaced my api-key value from x
                TogetCountry("https://api.ipdata.co/?api-key=xxxxxxxxxxxxxxxxxxxxxxxxxx");

                function parseQueryString() {
                    var qstr = document.URL.split("?")[1].split("amp;");
                    var a = qstr;
                    for (var i = 0; i < a.length; i  ) {
                        var b = a[i].split('=');
                        queryStringValue[decodeURIComponent(b[0])] = decodeURIComponent(b[1] || '');
                    }
                    SPLanguage = queryStringValue.SPLanguage || '';
                    SPClientTag = queryStringValue.SPClientTag || '';
                    SPProductNumber = queryStringValue.SPProductNumber || '';
                    hostweburl = queryStringValue.SPHostUrl;
                    appweburl = queryStringValue.SPAppWebUrl;
                    defaultQueryStringVal = "SPHostUrl="   hostweburl   "amp;SPLanguage="   SPLanguage   "amp;SPClientTag="   SPClientTag   "amp;SPProductNumber="   SPProductNumber   "amp;SPAppWebUrl="   appweburl;

                    console.log("defaultQueryStringVal-----", defaultQueryStringVal);
                }

                function TogetCountry(url) {
                    console.log("TogetCountry");
                    dataService.GetCountry(url).then(function (result) {
                        console.log("result", result);
                    });
                    console.log("---------"   country, city, ip);
                }
            }]);
    })();
  

dataservice.js

 (function () {
    'use strict';

    angular
        .module('rootapp')
        .service('dataService', ['$http', '$q', function ($http, $q) {
            var service = {};

            service.GetCountry = function (URL) {
                var deferred = $q.defer();
                $http.get(URL).then(function (result) {
                    deferred.resolve(result.data);
                }, function () {
                    deferred.reject();
                });
                return deferred.promise;
            }
            return service;

        }]);

})();
  

Буду признателен, если получу какую-либо помощь в решении этой проблемы.

Ответ №1:

Вы определяете rootapp дважды. Один раз в App.js и один раз в firstctrl.js . Вам нужно удалить [] из .module('rootapp', []) в firstctrl.js .