Angular Js语法错误

时间:2016-03-22 12:23:13

标签: javascript angularjs

我有以下工厂:

(function() {
angular.module('temp')
    .factory('Factory',Factory);

    employeeFactory.$inject = ['$http'];
    function employeeFactory($http) {
        var factory = {};
        var vm = this;

        factory.login = function(email,password) {
            return $http({
                'method': 'POST',
                'url': 'http://domain.dev/api/v1/login',
                'data': $.param({
                    'email': email,
                    'password': password
                }),
                'headers': {
                    'Content-Type': 'application/x-www-form-urlencoded'
                }
            });
        return factory;
    }
})();

我收到错误:

Uncaught SyntaxError: Unexpected token )

控制台引用最后一行:

})();

4 个答案:

答案 0 :(得分:5)

通过代码格式化程序运行代码以修复空白。问题变得很明显。

(function() {
        angular.module('skindustries')
            .factory('employeeFactory', employeeFactory);

        employeeFactory.$inject = ['$http'];

        function employeeFactory($http) {
            var factory = {};
            var vm = this;

            factory.login = function(email, password) {
                return $http({
                    'method': 'POST',
                    'url': 'http://domain.dev/api/v1/login',
                    'data': $.param({
                        'email': email,
                        'password': password
                    }),
                    'headers': {
                        'Content-Type': 'application/x-www-form-urlencoded'
                    }
                });
                return factory;
            }
        })();

您尝试用来关闭第1行开始的函数表达式的最后一个}实际上正在关闭employeeFactory函数。

然后,您需要另一个}来关闭从第1行开始的函数表达式,然后才能使)与作为脚本第一个字符的(匹配。

您可能希望将其放在return factory;语句之前,因为看起来缺少的}是属于您分配给factory.login的匿名函数的那个​​。

答案 1 :(得分:1)

您错过了}

试试这个:

(function() {
    angular.module('skindustries').factory('employeeFactory', employeeFactory);
    employeeFactory.$inject = ['$http'];
    function employeeFactory($http) {
        var factory = {};
        var vm = this;
        factory.login = function(email, password) {
            return $http({
                'method': 'POST',
                'url': 'http://domain.dev/api/v1/login',
                'data': $.param({
                'email': email,
                'password': password
                }),
                'headers': {
                'Content-Type': 'application/x-www-form-urlencoded'
                }
            });
        }   
        return factory;
    }
})();

答案 2 :(得分:0)

你在返回工厂之前就已经失踪了

(function() {
  angular.module('skindustries')
    .factory('employeeFactory', employeeFactory);

  employeeFactory.$inject = ['$http'];

  function employeeFactory($http) {
    var factory = {};
    var vm = this;

    factory.login = function(email, password) {
      return $http({
        'method': 'POST',
        'url': 'http://domain.dev/api/v1/login',
        'data': $.param({
          'email': email,
          'password': password
        }),
        'headers': {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
      });
    }
    return factory;
  }
})();

答案 3 :(得分:0)

我会用这个替换自调用函数,使其更具可读性。

 (function() {
    angular.module('skindustries').factory('employeeFactory', ['$http', function ($http) {

      function login(email, password) {
        return $http({
            'method': 'POST',
            'url': 'http://domain.dev/api/v1/login',
            'data': $.param({
            'email': email,
            'password': password
          }),
         'headers': {
           'Content-Type': 'application/x-www-form-urlencoded'
         }
       });
     }


    // expose public api
    return {
      login: login
    };
  }])}); 

Angular style guide

John Papa提供了非常好的指南