Ответ 1
calculate()
является частной функцией - доступ доступен только в области CartController
. Если вам не нужно использовать вашу функцию в представлении, рекомендуется сделать ее закрытой. В нем говорится, что для представления в представлении используется не, поэтому, если кто-то другой будет работать с этим кодом, подумайте дважды, прежде чем использовать его в представлении. Кроме того: из calculate
у вас есть доступ ко всем объектам, доступным в области CartController
(включая объекты, переданные в CartController
в качестве параметров).
Функция, объявленная таким образом, является правильным JS function
, что означает, что вы можете получить ссылку на нее по ее имени. Иногда считается, что это более читаемо, если вы заранее объявляете/создаете свою функцию и только потом назначаете ее свойствам какого-либо другого объекта (в данном случае $scope
):
function someFn (...) { ... }
function someOtherFn (...) { ... }
...
$scope.someFn = someFn
В приведенном выше фрагменте намерения очень ясны: сделайте someFn
доступным, сохраняя someOtherFn
частным.
Btw. объявление функций типа: function nameFn(...){...}
называется выражением функции; вы можете очень точно сделать это: var nameFn = function(...) {...}
(так называемое выражение функции). Между ними есть небольшая разница - в основном это незаконно:
someFn();
var someFn = function(...) {...}
тогда как это работает:
someFn();
function someFn(...) {...}
Иногда вы вынуждены использовать этот шаблон, посмотрите, например. на мой ответ на этот question.