используя угловые термины для соответствия кодам

0

Рассмотрим мой код ниже, который я не понимаю полностью, поскольку я делал много "обезьян, смотрящих обезьяну", глядя на коды других людей.

Пожалуйста, исправьте мою мысль, мы пойдем;

  1. В app.js, когда компилятор видит это

     angular
     .module('angApp', ['ngRoute', 'MainMenuCtrl'])
     .config(['$routeProvider', routeProvider]);
    

    Он определяет модуль, и поскольку его идентификатор совпадает с тем, что объявлено в атрибутах ng-app тега html-тега, это "основной" модуль. если это правильно, я мог бы назвать его mainMod вместо angApp, чтобы изменить его реальный смысл.

  2. В контроллерах.js, когда компилятор видит это

    var myApp = angular.module('MainMenuCtrl', ['ngAnimate']);
    myApp.controller('MainMenuCtrl', ['$scope', '$http', MainMenuCtrl]);
    

    Первая строка определяет новый модуль (ранее объявленный как зависимость для angApp на шаге 1), называемый MainMenuCtrl. Если это правильно, я могу настроить mainMenuMod вместо MainMenuCtrl.

    Вторая строка вводит контроллер MainMenuCtrl, это имя упоминается два раза в этой строке, первое упоминание - это ссылка на модуль, который был определен только в первой строке, второе упоминание - это имя функции конструктора. Если это правильно, я могу изменить первый MainMenuCtrl на MainMenuMod. Поэтому новые имена лучше описывают семантику.

     angular
      .module('mainMod', ['ngRoute', 'MainMenuMod'])
      .config(['$routeProvider', routeProvider]);
    
      var whatever = angular.module('MainMenuMod', ['ngAnimate']);
      whatever.controller('MainMenuMod', ['$scope', '$http', MainMenuCtrl]);
    

Я прав или неправ? благодаря

//---app.js-------------------
(function () {
     'use strict';

     angular
         .module('angApp', ['ngRoute', 'MainMenuCtrl'])
         .config(['$routeProvider', routeProvider]);
 })();

 function routeProvider ($routeProvider) {
     $routeProvider.when('/menuItems', {
         url: "/menuItems",
         templateUrl: 'views/mainMenu.html',
         controller: 'MainMenuCtrl'
     }).when('/first_page', {
         url: "/first_page",
         templateUrl: 'views/first_page.html',
         controller: 'FirstPageController'
     }).when('/second_page', {
         url: "/second_page",
         templateUrl: 'views/second_page.html',
         controller: 'SecondPageController'
     })
     .otherwise({      //home page
         redirectTo: '/menuItems'
     });
 }

//---controllers.js-------------------
var myApp = angular.module('MainMenuCtrl', ['ngAnimate']);
myApp.controller('MainMenuCtrl', ['$scope', '$http', MainMenuCtrl]);

function MainMenuCtrl($scope, $http) {
    $http.get('js/mainMenu.json').then(
        function (response) {
            $scope.menuItems = response.data;
        },
        function (error) {
            alert("http error");
        }
    )
//---index.html--------------
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="css/index.css">
    <base href="http://localhost:63342/project_student/">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular-route.min.js"></script>
    <script src="https://code.angularjs.org/1.5.0-rc.1/angular-animate.min.js"></script>
    <script src="js/app.js"></script>
    <script src="js/controllers/controllers.js"></script>
    <script src="js/controllers/headerCtrl.js"></script>
    <script src="js/controllers/first_page.js"></script>
    <script src="js/controllers/second_page.js"></script>
    <meta name="viewport" content="width=device-width" />
</head>
Теги:

1 ответ

0

Имена для модулей и для всего остального, не мешают, так что наличие MainMenuCtrl контроллера и mainMenuCtrl модуля (модули, как правило, следует PascalCase именования, разделенные точки для пространства имен) в порядке и однозначный. Добавление имени модуля с суффиксом "Mod" или "Module" является избыточным.

Семантически правильно иметь модуль mainMenu который загружает модуль mainMenuCtrl если есть вероятность, что они будут протестированы отдельно.

Ещё вопросы

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