Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
63
rated 0 times [  64] [ 1]  / answers: 1 / hits: 17314  / 12 Years ago, tue, november 13, 2012, 12:00:00

According to AngularJS's tutorial, a controller function just sits within the global scope.



http://docs.angularjs.org/tutorial/step_04



Do the controller functions themselves automatically get parsed into an encapsulated scope, or do they dwell within the global scope? I know that they are passed a reference to their own $scope, but it appears that the function themselves are just sitting in the global scope. Obviously this can cause problems down the road, and I have learned through experience and education to encapsulate Further more, if they do dwell within the global scope, would it not be considered a best practice to encapsulate them within an object to be referenced like this:



    Object.functionName();


Rather than this:



    functionName();


So as to prevent issues that occur with the pollution of the global scope (ie overriding functions, etc..)


More From » angularjs

 Answers
4

AngularJS supports 2 methods of registering controller functions - either as globally accessible functions (you can see this form in the mentioned tutorial) or as a part of a modules (that forms a kind of namespace). More info on modules can be found here: http://docs.angularjs.org/guide/module but in short one would register a controller in a module like so:



angular.module('[module name]', []).controller('PhoneListCtrl', function($scope) {

$scope.phones = [..];

$scope.orderProp = 'age';
});


AngularJS uses a short, global-function form of declaring controllers in many examples but while this form is good for quick samples it rather shouldn't be used in real-life applications.



In short: AngularJS makes it possible to properly encapsulate controller functions but also exposes a simpler, quick & dirty way of declaring them as global functions.


[#82018] Monday, November 12, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
emiliotristinv

Total Points: 181
Total Questions: 99
Total Answers: 96

Location: Argentina
Member since Fri, Oct 21, 2022
2 Years ago
;