#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
.