首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消选中angular-meteor中的复选框

取消选中angular-meteor中的复选框
EN

Stack Overflow用户
提问于 2016-04-21 12:20:25
回答 1查看 61关注 0票数 0

我做了一个angular-meteor应用程序,其中有我的settings.html中的类别列表,其中与复选框一起列出。选中后,它将显示在dashboard.html中。也就是说,将设置集合中的数组推送到用户的集合中。但现在,当我尝试取消选中时,它再次被推送到用户的集合中。所以请告诉我如何在取消选中时将其删除。

这是我的settings.html页面

代码语言:javascript
复制
    <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 for settings.html

代码语言:javascript
复制
 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');

                }
            });


        }

这是我的settings.html服务器端js。

代码语言:javascript
复制
    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
   }
     }


   })

}

如何删除?尝试取消勾选时如何删除勾号

EN

回答 1

Stack Overflow用户

发布于 2016-04-21 21:01:14

现在,您正在对每个change on复选框调用相同的函数(它只按其id进行查找)。它调用相同的更新方法,并且您没有限制未检查或已检查条件的方法。

仅当checked为true时调用getClicked函数,否则返回false。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36759594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档