2015-07-15 4 views
0

Я просматриваю один из курсов Pluralsight на AngularJS с MVC5, и одна из служб имеет это как оператор возврата, и это выглядит довольно странно. Я не уверен, что это делаетЧто делает этот оператор возврата внутри службы

return { 
    insertEmployee: insertEmployee, 
    updateEmployee: updateEmployee, 
    getEmployee:getEmployee 

}; 

вставка/обновление/получить имена имена методов в службе, но я не понимаю, возвратное заявление. Что это значит?

+0

ли это завод или услуга? –

ответ

3

Он возвращает объект с теми методами, доступными, например:

var methods = { 
    insertEmployee: insertEmployee, 
    updateEmployee: updateEmployee, 
    getEmployee:getEmployee 
} 

Теперь вы можете сделать:

methods.insertEmployee(); //etc... 
+0

Хорошо, это кажется разумным. Его просто то, что ive не видел этот синтаксис, включая пример, который вы даете.Я не знал, что вы можете определить такой объект в javascript. – bitshift

1

На самом деле вызова службы/завод (Оба они могут быть использованы так же, как на самом деле, несмотря на то, что они не предназначены для работы одинаково.) просто вызывает функцию. Определяемая вами функция.

Если вы сделаете это:

Услуги:

var myfunction = function(){ 
alert("hello"); 
} 

Без возвращения вы не видите эту функцию в контроллере.

Контроллер:

myservice.myfunction(); will not work. 

Вы должны вернуть объект, чтобы иметь возможность использовать функции.

Услуги:

var myfunction = function(){ 
alert("hello"); 
} 

return { 
    myfunction: myfunction; 
} 

Это позволит вам использовать сервис таким образом, в вашем контроллере:

myservice.myfunction(); 

Я обычно предпочитаю использовать синтаксис объекта в другой форме, но это только вопрос вкуса:

Услуги:

var service = {}; 

service.myfunction = function(){ 
    alert("hello"); 
} 

return service; 

Это также позволит вам использовать этот синтаксис в контроллере:

myservice.myfunction(); 

Надеется, что это помогает, если у вас есть больше вопрос, не стесняйтесь спрашивать.

1

Фактически вы можете понять это как AngularJS defines a factory like that. Это просто означает: я хочу разоблачить функции insertEmployee, updateEmployee и getEmployee пользователям factory.

Обратитесь к AngularJS: Service vs provider vs factory.

Таким образом, скажем, ваше имя фабрика myFactory, использование, как:

angular.module('MyApp') 
    .controller('MyCtrl', ['$scope', 'myFactory', function ($scope, myFactory) { 
      myFactory.getEmployee(); 
    }]); 
Смежные вопросы