I assume you're using FF?  See this *StackOverflow post 
<http://stackoverflow.com/questions/30111963/in-firefox-angular-model-doesnt-update-until-focus-leaves-dropdown-how-to-pro>
 
*for discussion of this behavior (it likely has to do with when the browser 
fires the *onchange* event) and for a sample directive to fix it.  

m

On Thursday, December 4, 2014 at 3:20:03 PM UTC-8, Edgar Monge wrote:
>
> hi Mauro, looking at you example if you use tab and arrow down, it doen't 
> work. any ideas why?  ex. if you tab and using the down arrow you select a, 
> the object update to a, then select b the object does not update, then 
> select c and the object updated to a,c
>
> any ideas why this doesn't work?
>  I have the same issue in my applications
>
>
>
> On Tuesday, April 30, 2013 11:03:54 AM UTC-7, Amir H. Hajizamani wrote:
>>
>> Hi Mauro,
>>
>> You've been caught out by Angular's scope inheritance hierarchy: 
>> http://docs.angularjs.org/guide/scope#scopehierarchies
>>
>> Within each iteration of the ng-repeat a *new* scope is created which 
>> inherits from its parent, in this case MainCtrl. These new scopes inherit 
>> the properties and methods of your MainCtrl which is why you can call 
>> 'addSelected' in your event handler. However, when you refer to 'selected' 
>> in your ng-model, when the value changes it is assigned to a property 
>> directly on these child scopes, not on MainCtrl. So in your plunker 
>> 'addSelected(selected)' works because the child scope knows about the 
>> method from its parent scope, and can pass in the 'selected' property 
>> directly from itself.
>>
>> When you put your $watch code on MainCtrl's scope, it is looking for a 
>> 'selected' model on MainCtrl which doesn't exist, and it knows nothing 
>> about those child scopes that ng-repeat created. You need to make sure that 
>> those child scopes refer to exactly one model that you can access on 
>> MainCtrl, and you do this by referring to something inside an Object. So 
>> finally (!), here is your code modified to use $watch: 
>> http://plnkr.co/edit/TfVU4CYjzfWN2UQZmwld 
>>
>> *The rule of thumb to avoid this problem is 'if you use ng-model there 
>> has to be a dot somewhere'.*
>>
>> Watching this short video (and the two before it in the series) might 
>> help clarify all this: The Dot http://www.egghead.io/video/DTx23w4z6Kc
>> For more depth, watch this: AngularJS Best Practices 
>> http://www.youtube.com/watch?v=ZhfUv0spHCY
>>
>> Hope that helps explain things.
>>
>> Amir
>>
>> On Tuesday, 30 April 2013 17:50:37 UTC+1, Mauro Sanna wrote:
>>>
>>> I'm using ng-change on a select:
>>>
>>> http://plnkr.co/edit/dnySXwv7EX3PdHtJXQKa?p=preview
>>>
>>> I want try $watch but the code does not work.
>>>
>>> $scope.$watch('selected', function (selected) {
>>>     $scope.selectedList.push(selected);
>>>   });
>>>
>>

-- 
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