Лучший способ определения контроллера в angularJs

0

Я новичок в angularJs. Я смущен, что лучший способ создать контроллер для ng-app="mainApp". При программировании других языков программирования, над которыми я работал, предлагаем сохранить относительные данные вместе. Но в angularJs считается лучшей практикой иметь новый модуль для контроллеров, когда мы можем определить контроллер над основным модулем приложения. Если мы создадим контроллер на mainApp, он будет поддерживать контроллер и связывать, что мы хотим на других языках.

var myapp = angular.module("mainApp", []);
myapp.controller("testController", function($scope)
{
    $scope.value = "test";
})

//OR

angular.module("mainApp", ["moduleController"]);
angular.module("moduleController", []).controller("testController", function($scope){
    $scope.value = "test";
})

Для производственной среды, которую нужно использовать.

  • 0
    Вы получили свой ответ?
Теги:

2 ответа

2

Опция 1:

var myapp = angular.module("mainApp",[]);
myapp.controller("testController",function($scope)
{
    $scope.value="test";
})

Вариант 2:

angular.module("mainApp", ["moduleController"]);
angular.module("moduleController",[]).controller("testController",function($scope){
    $scope.value="test";
})

Вариант 2 лучше, потому что это позволит вам писать ваши контроллеры в отдельных файлах. В результате ваш код будет более читабельным. Это также поможет вам, если вы хотите повторно использовать свои контроллеры в других проектах AngularJS.

Например, вы можете написать следующий код в одном файле, например app.js:

angular.module('mainApp',['ngRoute', 'appController']);

И вы можете написать контроллер в другом файле, например, controllers.js:

var appController= angular.module('appController', []);

appController.controller('testController', ['$scope',
    function($scope) {
        $scope.value="test";
    }
]);

Теперь вы можете повторно использовать контроллеры в другом проекте, просто добавив файл controllers.js в проект и добавив зависимость в appController в файле app.js

  • 0
    Даже с вариантом 1 вы можете использовать разные файлы для вашего другого контроллера. Посмотрите этот пример
1

Ни один из них не будет работать в рабочей среде, где весь скрипт будет минимизирован. Подсистема углового инжектора может находить и разрешать $scope, $location, $etc И предоставлять их компоненту по запросу.

myapp.controller("testController",function($scope)
{
   $scope.value="test";
})

Тем не менее, после оценки, приведенный выше код будет выглядеть примерно так:

a.controller("testController",function(b)
{
   b.value="test";
})

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

Вам придется использовать его, как показано ниже:

var myapp=angular.module("mainApp",[]);
myapp.controller("testController", ['$scope',function($scope)
{
   $scope.value="test";
}]);

В этом случае функция контроллера инициализируется внутри массива после списка каждой зависимости как строковых литералов. Это гарантирует, что инъекция зависимостей должным образом поддерживается, даже путем минимизации или угашения.

Ещё вопросы

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