2014-11-16 4 views
5

Если я хочу сослаться на мою угловую функцию контроллера из шаблона, я должен поставить функцию в $scope, как это:AngularJS функции контроллера передовая практика

[template] 
<button ng-click="doSomething()"></button> 

[controller] 
$scope.doSomething = function(){}; 

Но как насчет других функций (и переменного контроллера, что Мне не нужно смотреть), те, которые я не буду ссылаться в шаблонах.

Должен ли я помещать их все в '$ scope' тоже? Разве это не плохо для производительности? Есть ли какие-либо ошибки при объявлении таких функций за пределами $scope?

+1

Нельзя помещать их в сферу действия. Просто определите их внутри контроллера, как обычные функции и переменные. –

+0

@MadhurAhuja нравится 'this.myFunction = ..' или 'var myFunction = ...'? – Anri

+0

Я предпочитаю функцию myFunction() {...} '. Проблема с 'var myFunction = ...' заключается в том, что ее можно вызвать только после того, как она объявлена. –

ответ

5

Вы можете просто определить их как частные функции в функции контроллера.

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

app.controller('MainCtrl', function ($scope) { 
    $scope.exposedFn = exposedFn; 

    function exposedFn() { 
     fnNotExposed(); 
    } 

    function fnNotExposed() {} 

}); 
Смежные вопросы