I am  confused.   My understanding is that in an angular Controller 'this' 
refers to the controller context itself like any other constructor function 
where '$scope'  is current angularjs $scope/view object.  They are not the 
same thing.  If you define a function on 'this' and a function on '$scope' 
the latter can be seen by your html but not the former.  With the 
ridiculous javascript non-lexical exceptions on 'this' mixed in it makes 
for quite a confusion-party.  Then toss in that child scopes get created 
fairly often where your constructor 'this' is not changing across these 
sub-scopes.  And then there are directives.  This stuff is as clear as mud. 
 It really needs to be cleaned up.  

On Monday, March 10, 2014 12:44:28 PM UTC-7, Artem Saveliev wrote:
>
> Comment on actual development - Angular UI's ngGrid uses string reference 
> to data variable. They allow the use of both object reference and string 
> name, but string name is the only one that supports data updates.
> The reason is that they use $watch to watch the data. 
>
> I just found that I can't cleanly use "controller as" together with ngGrid 
> for that reason - my controller doesn't know what name to pass to ngGrid, 
> as it doesn't know it's own name. There are several workarounds that I am 
> considering, but in general this will be an issue as you can't cleanly 
> watch the content of the controller. I really need to know the string name 
> of the controller at the time of construction for a simple solution.
>
>
>
> On Thursday, February 20, 2014 5:02:00 PM UTC-5, Кошелев Иван wrote:
>>
>>  >>$scope.$watch('controller.varname', ...)
>> Valid point. But in development I'm yet to encounter a situation where 
>> this would pose a problem. A lot more often I’m found in a situation where 
>> controller A uses a variable on the scope that it did not define and I am 
>> forced to go look for its defining controller by simple text  search for 
>> its name.
>>
>> Plus, if you have a variable that will be used somewhere down the scope 
>> inheritance chain, it is already a good practice to declare it on an object 
>> attached to a scope as opposed to the scope itself, to avoid accidental 
>> overshadowing if you write into it. 
>>
>>
>>
>> *From:* Guillaume Lecomte
>> *Sent:* ‎Thursday‎, ‎February‎ ‎20‎, ‎2014 ‎23‎:‎16
>> *To:* [email protected]
>>
>> Sorry to bring that back but am I the only one who see a design problem 
>> here? 
>> We define an alias in the view/template ( MyCtrl as controller ), if we 
>> want to watch a variable in the (controller) scope from the controller, we 
>> need to know the alias we defined in the template 
>> ($scope.$watch('controller.varname', ...), 
>> it's not DRY, it generates coupling and prevent reusing several times the 
>> same controller (nested).
>>
>> I'm suggesting a $controllerScope injectable (a $scope 'scoped' on the 
>> controller) to solve that, does anyone else want something like that?
>>
>> Le vendredi 14 juin 2013 21:19:12 UTC+2, Guillaume Lecomte a écrit :
>>>
>>> Doesn't that feature need a way to inject a controllerScope in the 
>>> controller (a scope where this is the controller) to be able to watch 
>>> members agnosticly of the alias defined in the view to be complete? Or 
>>> provdide a way to mixin that scope in the controller?
>>
>>  -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "AngularJS" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/angular/84selECbp1I/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/angular.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to