$scope
является услугой, предоставляемой $scopeProvider
. Вы можете вводить его в контроллеры, директивы и другие услуги с использованием встроенной в форсунке зависимости угловой в:
module.controller(function($scope) {...})
который является сокращением для
module.controller(['$scope', function($scope) {...}])
В первой версии Dependency Injector делает вывод имя поставщика («$ scopeProvider») на основе имени параметра функции («$ scope» + «Provider»). Вторая версия также создает имя провайдера, подобное этому, но использует явно'$scope'
в массиве, а не имя параметра функции. Это означает, что вы можете использовать любое имя параметра вместо $scope
.
Таким образом, вы в конечном итоге с кодом, как это: module.controller(['$scope', function(scope) {...}])
где scope
может быть что угодно, это имя параметра функции, может быть foo
или a12342saa
.
Инжектор зависимость в основном делает это:
function controller(def) {
//def[def.length-1] is the actual controller function
// everything before are it's dependencies
var dependencies = [];
for(dep in def.slice(0, def.length-1)) {
dependencies.push(__get_dependency_by_name(dep));
}
def[def.length-1].apply(dependencies);
}
Я думаю, что причина, почему использование «сферы» вместо «$ рамки» в качестве имени зависимостей не будет работать теперь ясно. Определить «scopeProvider» нет.
Эта ссылка [https://groups.google.com/forum/#!topic/angular/-w6FAkpDYzM] полезна для вас – Gunaseelan