2014-11-16 18 views
5

Jeśli chcę odnieść się do mojego kątowej funkcji kontrolera z szablonu, należy umieścić funkcję w $scope coś takiego:angularjs funkcje kontrolera najlepszych praktyk

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

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

ale co z innymi funkcjami (i zmiennych kontroler, który Nie muszę być obserwowany), te, których nie odwołam w szablonach.

Czy powinienem je również umieścić w "zakresie $"? Czy to nie jest złe dla wydajności? Czy są jakieś błędy w deklarowaniu takich funkcji poza $scope?

+1

Nie należy umieszczać ich w zakresie. Po prostu zdefiniuj je w kontrolerze jak zwykłe funkcje i zmienne. –

+0

@MadhurAhuja jak 'this.myFunction = ..' lub 'var myFunction = ...'? – Anri

+0

Preferuję 'function myFunction() {...}'. Problem z 'var myFunction = ...' polega na tym, że można go wywołać dopiero po zadeklarowaniu. –

Odpowiedz

5

Możesz po prostu zdefiniować te funkcje jako prywatne w funkcji kontrolera.

Należy zauważyć, że preferuję składnię deklaracji funkcji, a nie przypisywanie zmiennej funkcji do zmiennej, ponieważ pozwala ona zadeklarować wszystkie funkcje na dole, co zmniejsza obciążenie poznawcze podczas próby sprawdzenia, co się dzieje.

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

    function exposedFn() { 
     fnNotExposed(); 
    } 

    function fnNotExposed() {} 

}); 
Powiązane problemy