yep that got it - thanks very much.

I am *loving* this Angular stuff -  totally brilliant.

thanks agin 
best rob

On Friday, 4 April 2014 16:16:44 UTC+1, William Szeliga wrote:
>
> I think this may be an inheritance problem again.  Check out the 
> Inheritance article here: 
> https://github.com/angular/angular.js/wiki/Understanding-Scopes. 
>  Hopefully this will be of some help.  I THINK this may come down to 
> putting the things you want to watch inside of an object (instead of 
> $scope.position, do $scope.someClevelModelName.position) and watch THAT 
> property instead of the position property of the outer scope.
>
> Really hope this helps.
>
> -Bill
>
>
> On Fri, Apr 4, 2014 at 8:47 AM, Rob Munro 
> <[email protected]<javascript:>
> > wrote:
>
>> I have an audio player and am using this range slider - which works quite 
>> well.
>> https://github.com/danielcrisp/angular-rangeslider/blob/master/angular.rangeSlider.js
>>
>> <li ng-controller="PlayerCtrl" style="display:inline-block;"> 
>> ...   <span range-slider min="0" max="100" ng-controller="PositionCtrl" 
>> model-max="position" pin-handle="min" filter="positionSilderText">
>> ...</li>
>>
>> So I make a new Controller PositionCtrl inside the PlayerCtrl like so:
>>
>> angular.module('myApp.controllers', []).controller('PlayerCtrl', 
>> ['$scope','$timeout',function($scope,$timeout) {
>>         $scope.audioTag=document.getElementById('audioPlayer');// an 
>> <audio/> tag
>>         $scope.position = 0;
>>         $scope.PositionCtrl = function ($scope) {
>>               $scope.$watch('position', function() {
>>                     if ($scope.audioTag.duration) {
>>                         $scope.audioTag.currentTime = 
>> $scope.audioTag.duration * $scope.position / 100.0;
>>                     }
>>               });
>>           };
>>            ...
>>           $scope.ui=function() {//called by a $timeout
>>                ...
>>               var newpos = $scope.audioTag.duration;
>>               $scope.position = setpos;
>>            //   $scope.$$childHead.position = setpos;// <<-- dont want to do 
>> this
>>               ....
>>           }
>>     });
>>
>> So initially the ui() function updates my slider pos using 
>> $scope.position and all good.
>>
>> My problem is that once i drag the slider the position variable gets 
>> created in the child(PositionCtrl) scope and so the watch no longer finds 
>> the variable in the parent(PlayerCtrl) scope. Hence the slider no longer 
>> updates from the ui() method.
>>
>> If i uncomment the line to assign the $$childHead.position then the 
>> watcher works . But its no good as i might add more children later and 
>> AFAIK you can't access child scope from the parent anyways (not sure why).
>>
>> What is the correct way to share the position with both scopes?
>>
>> I asked this 
>> here<http://stackoverflow.com/questions/22845421/how-to-share-a-scope-variable-with-a-child-scope/22846478?noredirect=1>-
>>  but didn't get any answers - that worked.
>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/angular.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

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