2015-06-14 4 views
0

Я немного newbiew с javascript и я начинаю использовать angular.jsAngularjs: инъекционный контроллер модуля внутри анонимной функции

Так что мой вопрос, если есть способ, чтобы ввести контроллер внутри модуля, который объявлен в анонимная функция

мой код выглядит следующим образом

app.js

(function(angular) { 
    var app = angular.module('Organizer', ['ngMaterial', 'ngAnimate', 'ngAria']); 
})(angular); 

siteController.js

(function(angular, app) { 
    app.controller('site', function($scope, $mdDialog) 
    { 
     var alert = $mdDialog.alert({ 
      title: 'Test', 
      content: 'Testing', 
      ok: 'Exit' 
     }); 

     $mdDialog.show(alert); 
    }); 
})(angular); 

я пытался искать пути, если это возможно, но все же я хотел бы видеть, если кто-нибудь здесь может объяснить, как это можно сделать, если он мог.

Примечание: я уже использовал angular.js раньше, и я хотел бы попробовать другой способ объявить контроллеры таким образом, клиент не будет иметь какой-либо способ изменить его

ответ

2

При создании модуля в Угловом, то вы можете таким образом не обфускать его. В консоли пользователь может просто запустить angular.module('Organizer'), чтобы получить доступ к вашему приложению, а затем вызвать любой метод, который им нужен.

Причина, по которой ваш код не будет работать так, как написано, заключается в том, что вы не передаете переменную app в свою анонимную функцию. Так что если вы хотите добавить контроллер в Organizer модуль, то вы бы сделать что-то вроде этого:

(function(angular) 
{ 
    angular. 
     module('Organizer'). 
     controller('site', function($scope, $mdDialog) 
     { 
      ... 
     }); 
})(angular); 
+0

ну, спасибо за объяснение, я помечаю это как решение – nosthertus

1

Там нет необходимости, чтобы обернуть любого из этого кода в автомодельном выполнении функций, если вы пытаетесь сохранить переменные из глобального масштаба. Единственный глобальный - это «угловой» объект.

Ваш app.js должен только

'use strict'; 
angular.module('Organizer', ['ngMaterial', 'ngAnimate', 'ngAria']); 

Вы файл контроллер должен иметь только

'use strict'; 
angular.module('Organizer').controller('siteController', function($scope, $mdDialog) { 
    var alert = $mdDialog.alert({ 
     title: 'Test', 
     content: 'Testing', 
     ok: 'Exit' 
    }); 

    $mdDialog.show(alert); 
}); 

Первый вызов модуль в app.js проходит второй параметр, который угловатые использует для создания экземпляра ваших модуль. Последующие вызовы, которые опускают второй параметр «получить» модуль.

+0

это тоже решение, но я уже кодирую другим способом – nosthertus

+0

@nosthertus Его не «также решение» Его стандартный способ делать вещи в angularjs. –

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