简体   繁体   中英

defining functions in angularjs constants

controller.js

angular.module('app.main')

.controller('MainCtrl', function ($scope, currentUser, addAPI) {
    $scope.form = {};
    $scope.subdomain = currentUser.domainName;

    $scope.add = function () {
        addAPI.addAdmin(localStorage['token'], $scope.subdomain, $scope.form, onSuccess, onError);
    };

take the details from the form and pass token and subdomain(took from current userDatService)

addAPI.js

angular.module('app.main').factory('addAPI', function ($resource, $http, Constant) {
var adminAPI = function () {

    this.addAdmin = function (token, domain, dataObj, sucCall, errCall) {
        $http({
            method: 'POST',
            url: Constant.API.prefix + domain + Constant.API.postfix + '/client/admin',
            headers: {
                'Token': token
            },
            data: dataObj
        }).then(handleResp).catch(handleResp);
};
return new adminAPI;});

sending data to API URL

constants.js

angular.module('app.constants', [])

.constant('Constant', {
        'API': {
            prefix: 'http://api.',
            postfix:'.dev.education.in/v1/academy-api/api/v.1.0'
        }
    });

1.I want to have a function in constants.js which accepts user or subdomain and returns URL?

2.is it the right way to format a base_url or any suggestions on improving.

3.I need to define a perfect base_url with prefix + domain + postfix + ...

I'm new to angularJs and Javascript and i tried my best to get a solution but functions are not working with constants

It may be a better method to put your constants in a vanilla javascript file and load them onto the stack (via html) before any angular-related scripts are loaded. That way they will already be in the global namespace and you can simply refer to them anywhere.

eg

Constant.js

var API = {
    prefix: 'http://api.',
    postfix:'.dev.education.in/v1/academy-api/api/v.1.0'
}

index.html

<script src="Constant.js"></script>
<script src="factories/addAPI.js"></script>

addAPI.js

    angular.module('app.main').factory('addAPI', function ($resource, $http, Constant) {
var adminAPI = function () {

    this.addAdmin = function (token, domain, dataObj, sucCall, errCall) {
        $http({
            method: 'POST',
            url: API.prefix + domain + API.postfix + '/client/admin',
            headers: {
                'Token': token
            },
            data: dataObj
        }).then(handleResp).catch(handleResp);
};
return new adminAPI;});

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