在angularjs常量中定义函数

时间:2016-06-13 19:06:04

标签: javascript angularjs xmlhttprequest 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);
    };

从表单中获取详细信息并传递令牌和子域(从当前的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;});

将数据发送到API网址

constants.js

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

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

1.我想在constants.js中有一个接受用户或子域并返回URL的函数?

2.这是格式化base_url的正确方法或任何有关改进的建议。

3.我需要用prefix + domain + postfix + ...

定义一个完美的base_url

我是angularJs和Javascript的新手,我尽力找到一个解决方案,但函数不能使用常量

1 个答案:

答案 0 :(得分:0)

在加载任何与角度相关的脚本之前,将常量放在一个vanilla javascript文件中并将它们加载到堆栈(通过html)可能是更好的方法。这样他们就已经在全局命名空间中,你可以在任何地方简单地引用它们。

e.g。

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;});