модуль angularjs, какое имя использовать? и почему?

0

У меня есть два вопроса для нижеприведенных кодов: я просто изучаю angularjs и считаю, что это очень запутанно:

  1. factory.quote и QuoteFactory. Почему я не могу использовать имя factory.quote в контроллере?
  2. почему я не могу поставить 'ngResource' внутри, как angular.module('factory.quote', []). factory ('QuoteFactory', ['ngResource', '$ resource', function ($ resource)

    (function () {
    'use strict';
    angular.module('app', [
    // Angular modules 
    'ngRoute',
    'controller.quote',
    // Custom modules 
    'factory.quote'
    
    
    // 3rd Party Modules
    
    ]);
    
    angular.module('controller.quote', []).controller('QuoteController', ['$scope', 'QuoteFactory', function ($scope, QuoteFactory) {
    $scope.quote = QuoteFactory.query();
     }]);
    
    /*angular.module('controller.quote', []).controller('QuoteController', ['$scope', 'factory.quote', function ($scope, factory.quote) {
    $scope.quote = factory.quote.query();
    }]);*/
    
    angular.module('factory.quote',['ngResource']).factory('QuoteFactory', ['$resource', function ($resource) {
    return $resource('/api/quote', {}, {
        query: { method:'GET',param: {},isArray:true}
    });
     }])
      })();
    
Теги:

3 ответа

2
Лучший ответ

Обычно угловая парадигма для веб-приложений от среднего до большого размера идет таким образом

У нас есть отдельная папка для контроллеров, сервисов/фабрик, директив, констант, фильтров и т.д....

фактически при создании любого модуля мы выполняем функцию angular.module('your-module-name', ['depend modules']);

Поэтому, создавая контроллеры,

мы говорим, что ваш-module-name.controller('your-controller-name', ['зависимые фабричные/служебные модули'])
так что контроллер действует как логическая реализация (r) на стороне клиента и связывается с услугами, в которых фабричная функция имеет http-вызовы на стороне сервера

Так что в вашем случае factory.quote и QuoteFactory. Почему я не могу использовать имя factory.quote в контроллере?

Как обсуждалось выше в моем посте,

обычно мы общаемся с функциями службы/фабрики, которые заставляют говорить на стороне сервера код через http-вызовы или любые другие протоколы. Поэтому нам нужны модули фабрики/службы, которые помогут нам с их функциями, чтобы мы могли общаться с кодом на стороне сервера

надеюсь, это ясно

и придя к вашему второму вопросу

ngResource - это имя модуля, который предоставляет службы/функции, которые могут использоваться с их именами, но для использования функций ngResource (который является модулем) нам нужно импортировать его в наш основной модуль

поэтому мы помещаем его в [], т.е. список зависимостей нашего углового модуля

спасибо

0

В приведенном выше коде вы создаете отдельные модули для controllers и factory.

1) Почему я не могу использовать имя factory.quote в контроллере?

factory.quote - это ваше имя модуля и содержит любое количество контроллеров и фабрик. В этом контроллере вы создали единую фабрику только в том коде, на котором это имя - QuoteFactory. Вы собираетесь использовать эту фабрику в своем контроллере, а не в модуле. Таким образом, вы не можете использовать свое имя модуля здесь, вы должны использовать название фабрик, которые находятся внутри tyour module factory.quote.

2) почему я не могу помещать 'ngResource' внутрь как angular.module('factory.quote', []). Factory ('ngResource', 'QuoteFactory', ['$ resource', function ($ resource)

angular.module('factory.quote',[]).factory('ngResource' ,'QuoteFactory', ['$resource', function ($resource) - Что вы здесь делаете? Вы пытаетесь создать фабрику с name ngResource? Этот код полностью запутан.

0

1.) factory.quote и QuoteFactory. Почему я не могу использовать имя factory.quote в контроллере?

  • 'factory.quote': это имя модуля. Использование, когда вы получили другой модуль (например, 'app'), хотите использовать то, что доступно в 'factory.qoute'
// Here you are telling 'app' to load module 'factory.qoute'
angular.module('app', ['factory.qoute'])
  • 'QuoteFactory' - это заводское имя, доступное внутри модуля 'factory.qoute'.
// Here you are telling 'app' to load module 'factory.qoute'
angular.module('app', ['factory.qoute'])
// Here you are using 'QuoteFactory' which is the content of 'factory.qoute'. 
.controller('QuoteController', ['$scope', 'QuoteFactory', function ($scope, QuoteFactory) {
    $scope.quote = QuoteFactory.query();
}]);

=> Фактически " factory.qoute " и " QuoteFactory" - это имя 2-х разностных вещей. Это как машина с именем factory.qoute имеет механизм с именем QuoteFactory.

Это похоже на клавиатуру. И когда вы хотите использовать кнопку [Enter]. Вы не подключаете кнопку [Enter] к компьютеру. Но вам нужно будет подключить целую клавиатуру к компьютеру.

2.) почему я не могу поставить 'ngResource' внутри как angular.module('factory.quote', []). Factory ('ngResource', 'QuoteFactory', ['$ resource', function ($ resource)

Подобный ответ для первого вопроса. 'ngResource' - это модуль, вы не используете его на уровне механизма.

Это похоже: вы не подключаете клавиатуру к монитору, а на свой компьютер.

  • 1
    Я думаю, я понял, сначала создайте модуль, а затем создайте сервис / контроллер. Чтобы использовать его, вы должны загрузить модуль, а затем использовать сервис.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню