2016-04-21 4 views
0

Ich habe eine Winkelmeteor App gemacht, wo es eine Liste von Kategorien in meiner settings.html gibt, die mit Check-Box aufgeführt sind. Wenn es markiert ist, wird es in der dashboard.html angezeigt. Das heißt, das Array aus den Einstellungen wird in die Sammlung des Benutzers verschoben. Aber jetzt, wenn ich versuche, das Häkchen zu entfernen, wird es erneut in die Sammlung des Benutzers verschoben. Also sag mir, wie ich es entfernen kann, wenn es nicht angekreuzt ist.Deaktivieren Sie ein Kontrollkästchen in Winkelmeteor

Dies ist meine settings.html Seite

<div layout-gt-sm="row" ng-repeat="detail in dynamicSettingsCtrl.generalSettings.generalSetting"> 
     <md-checkbox aria-label="Checkbox 1" ng-model="dynamicSettingsCtrl.status[detail._id]" ng-change="dynamicSettingsCtrl.getClicked(detail._id)"> 

       <p> {{detail.name}} {{ detail.data.cb1 }}</p> 
     </md-checkbox> 
    </div> 

Das für settings.html meine Client-Seite js ist

let self = this; 
     let user = Meteor.user(); 
     let userId = Meteor.userId(); 
     self.data = {}; 
     self.data.cb1 = true; 
     self.isChecked = true; 
     CurrentPage.setTitle('Settings'); 
     let customerId = [userId] 
     self.subscribe('getCustomerDetails',() => [customerId], { 
      onReady: function() { 
       self.helpers({ 
        currentUser:() => { 
         return Meteor.users.findOne({ 
          _id: Meteor.userId() 
         }); 

        } 
       }) 
      } 
     }); 

     self.subscribe('generalSettingsDetails',() => []) 
     this.status = {} 
     self.autorun(() => { 
       this.currentUser = 
        Meteor.users.findOne({ 
         _id: Meteor.userId() 
        }); 

       this.generalSettings = {} 
       this.generalSettings['generalSetting'] = GeneralSettings.find({}).fetch() 

       var selectedObs = [] 
       console.log(self.currentUser.settings) 
       console.log(this.generalSettings) 

       _.map(this.generalSettings['generalSetting'], function(genset) { 
        delete genset.$$hashKey 
        if (self.currentUser) { 
         let ret = _.find(self.currentUser.settings, function(sets) { 
          return sets._id === genset._id 
         }) 
         if(ret){ 
          self.status[ret._id] = true 
         } 

        } 
       }) 

      }) 
      // console.log(self.currentUser) 

     ///subscribing general settings 
     // self.subscribe('generalSettingsDetails',() => [], { 
     //  onReady: function() { 
     //   self.helpers({ /// helpers to make it reactive 
     //    generalSettings:() => { 
     //     let settings = GeneralSettings.find({}).fetch() 
     //      //var subSettings = [] 
     //     for (key in settings) { 

     //      delete settings[key].$$hashKey 

     //     } 
     //     console.log(settings) 
     //     return { 
     //      'generalSetting': settings 
     //     }; 
     //    } 
     //   }) 
     //  } 


     // }); 

     ///end of subscribing general settings and starting of click function 
     self.getClicked = (settingId) => { 
      self.dataArry = {}; 
      self.dataChk = {}; 

      // self.currentUser = {}; 


      console.log(settingId) 


      Meteor.call("updateSettings", settingId, function(error, result) { 
       if (error) { 

        ToastService.getToastbox($mdToast, 'Something went error!Unable to add details', 'error-toast'); 
       } else { 
        //self.currentUser = {}; 

        ToastService.getToastbox($mdToast, 'Details added successfully !', 'success-toast'); 

       } 
      }); 


     } 

Dies ist mein Server-Seite js für settings.html

updateSettings: function(generalValue) { 
    let userId = Meteor.userId(); 
     let settingsDetails = GeneralSettings.findOne({ 
    "_id": generalValue 
}); 
      Meteor.users.update({ 
    _id: userId 
    }, { 
    $push: { 
     "settings": { 
     "_id": generalValue, 
     "name": settingsDetails.name, 
     "description": settingsDetails.description, 
     "tag": settingsDetails.tag, 
     "type": settingsDetails.type, 
     "status": settingsDetails.status 
    } 
    } 


    }) 

} 

Wie kann ich löschen? Wie Sie dieses Häkchen entfernen, wenn Sie versuchen, die Markierung zu entfernen

Antwort

0

Jetzt rufen Sie die gleiche Funktion bei jeder Änderung der Checkbox an (die nur auf die Suche nach ihrer ID drückt). Es ruft die gleiche Aktualisierungsmethode auf und Sie haben die Methode der nicht aktivierten oder geprüften Bedingung nicht eingeschränkt.

Nur getClicked Funktion aufrufen, wenn aktiviert ist, geben Sie andernfalls false zurück.

Verwandte Themen