javascript - Use one md-switch to toggle a group of other md-switchs in HTML/JS -


i wanting able toggle , untoggle entire group sections. when group section toggled off, want sections in group toggle off or disabled. if group section toggled on, want sections toggled on or enabled. added ng-change group toggle function togglelayergroup. have foreach inside function goes through feeds in group. not sure add turn off or on feeds in group.

controller

this feeds loaded up.

// -- load feeds   if (service.currentuser.feeds) {     var feeds = service.currentuserorg.feeds;     angular.foreach(feeds, function(feed, index) {       var lg = $scope.layergroups[feed.category];       if(lg) {         lg.feeds[feed.id] = feed;         lg.feeds[feed.id].layerstate = service.currentuser.mapstate.visiblelayers.indexof(feed.id) >= 0;         if (lg.feeds[feed.id].layerstate) {           lg.state = true;         }       }     });   } 

this switches hit.

$scope.layerstate = false; $scope.layergroup = false;  $scope.togglelayer = function (layerstate, feed) {   if (layerstate) {     subscribefeed(feed);      if (service.currentuser.mapstate.visiblelayers.indexof(feed.id) < 0) {       service.currentuser.mapstate.visiblelayers.push(feed.id);       $scope.savestate();     }   }   else {     unsubscribefeed(feed);      var index = service.currentuser.mapstate.visiblelayers.indexof(feed.id);     if (index >= 0) {       service.currentuser.mapstate.visiblelayers.splice(index, 1);       $scope.savestate();     }   } };  $scope.togglelayergroup = function (layergroupstate, layergroup) {   if (!layergroupstate) {     angular.foreach(layergroup.feeds, function (feed, index) {       subscribefeed(feed);       $scope.savestate();     });   }   else {     angular.foreach(layergroup.feeds, function (feed, index) {       unsubscribefeed(feed);       $scope.savestate();     });   } };  function subscribefeed(feed) {   switch (feed.category) {     case 'people':     case 'assets':       feed._markercoll = {};       feed.processentity = processentity;       feed.clearfeed = clearfeed;       break;     case 'places':       feed._placecoll = {};       feed.processentity = processentity;       feed.clearfeed = clearfeed;       break;   }   feed.icons = service.currentuser.feedicons;   feed.off = nextservice.on(feed.id, function (data) {     feed.processentity(data);   });  function unsubscribefeed(feed) {   feed.off();   delete feed.off;   nextservice.emit('unsubscribe', {id: feed.id});   feed.clearfeed(); } 

i got work properly. these changes made.

html

<!--layer toggle switch-->         <md-switch class="md-primary" ng-model="layergroup.state" ng-change="togglelayergroup(layergroup)" aria-label="{{layergroup.displayname}} toggle switch"></md-switch>  <!--layer feeds-->       <div  ng-repeat="feed in layergroup.feeds" layout="row" layout-align="start center" style="padding: 0 16px;">         <!--feed name-->         <p flex class="m2" style="color: #ffffff;" ng-style="{ 'opacity' : layergroup.state ? '1' : '.3' }">{{feed.name}}</p>         <!--feed switch-->         <md-switch class="md-primary" ng-model="feed.layerstate" ng-disabled="!layergroup.state" ng-change="togglelayer(feed)" aria-label="{{feed.name}} toggle switch"></md-switch>       </div> 

i added ng-style show when feeds disabled. , ng-disabled disable switch when layergroupstate false.

controller

// -- load feeds   if (ecosystemservice.currentuserorg.feeds) {     var feeds = ecosystemservice.currentuserorg.feeds;     angular.foreach(feeds, function(feed, index) {       var lg = $scope.layergroups[feed.category];       if(lg) {         lg.feeds[feed.id] = feed;         lg.feeds[feed.id].layerstate = ecosystemservice.currentuser.mapstate.visiblelayers.indexof(feed.id) >= 0;         if (lg.feeds[feed.id].layerstate) {           lg.state = true;         }       }     });   }  $scope.togglelayergroup = function (layergroup) {   if (layergroup.state) {     angular.foreach(layergroup.feeds, function (feed) {       subscribefeed(feed);        if (ecosystemservice.currentuser.mapstate.visiblelayers.indexof(feed.id) < 0) {         ecosystemservice.currentuser.mapstate.visiblelayers.push(feed.id);         $scope.savestate();       }       feed.layerstate = true;     });   }   else {     angular.foreach(layergroup.feeds, function (feed) {       unsubscribefeed(feed);        var ndex = ecosystemservice.currentuser.mapstate.visiblelayers.indexof(feed.id);       if (ndex >= 0) {         ecosystemservice.currentuser.mapstate.visiblelayers.splice(ndex, 1);         $scope.savestate();       }       feed.layerstate = false;     });   } }; 

i added code place feeds loaded , added code in togglelayergroup change layerstate dependending on value of layergroup.


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -