Снимите флажок в angular-meteor

Я сделал приложение angular-meteor, где в моем settings.html есть список категорий, которые указаны с флажком. Когда он отмечен, он отображается в dashboard.html. То есть массив из коллекции настроек помещается в коллекцию пользователя. Но теперь, когда я пытаюсь снять отметку, он снова попадает в коллекцию пользователя. Вот и подскажите, как убрать, когда не проверено.

Это моя страница settings.html

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

Это мой клиентский js для settings.html

 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');

                }
            });


        }

Это мой серверный js для 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
   }
     }


   })

}

Как сделать удаление? Как убрать галочку при попытке снять галочку


person Aysha Azura    schedule 21.04.2016    source источник


Ответы (1)


Прямо сейчас вы вызываете одну и ту же функцию при каждом изменении флажка (который подталкивает только поиск по его идентификатору). Он вызывает тот же метод обновления, и вы не ограничили метод непроверенного или отмеченного условия.

Вызывайте функцию getClicked только тогда, когда проверено значение true, в противном случае возвращайте false.

person Gyandip Pandey    schedule 21.04.2016