2016-03-22 2 views
1

У меня есть следующий завод:Угловая синтаксис Js ошибка

(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) 

Консоль относится к последней строке:

})(); 

ответ

5

Run ваш код через форматирование кода для исправления пробелов. Проблема становится очевидной.

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

+0

чем смысл двух оператора возврата внутри 'factory.login'? –

+0

Спасибо, что помогли! – Jamie

+0

@JenishRabadiya - Первый «возврат» по существу возвращает полученный ответ от запроса «POST». тогда как второй «возврат»; возвращает | публикует фабрику и связанные с ней api публично. Таким образом, в приведенном выше примере вы подвергаете функцию «login (u, p)» другим компонентам вашего приложения, когда эта служба вводится в качестве зависимости в вашей службе управления и т. Д. –

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; 
    } 
})(); 
+0

Это будет ошибка. Отчеты JS Hint: ожидаемый идентификатор и вместо этого видел «)». – Quentin

+0

@Quentin Yup Я исправил его. –

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

Смежные вопросы