【问题标题】:conditionally checking check box in angularjs有条件地检查angularjs中的复选框
【发布时间】:2016-08-09 17:02:36
【问题描述】:

我为设置创建了一个 angular-meteor 页面。 In that settings page menus are listed and when a menu is selected then it is displayed in home page.取消选中时,它会从仪表板中删除。代码是

在客户端 js `angular.module('demo').directive('generalSettings', function() {

return {
    restrict: 'E',
    templateUrl: 'client/lms/general-settings.html',
    controllerAs: 'generalSettingsCtrl',
    controller: function($scope, $reactive, $stateParams, $mdDialog, $state, $mdToast, ToastService, $timeout, $q, $log, errorValidatorUtil, CurrentPage) {
        $reactive(this).attach($scope)
        let self = this;
        let user = Meteor.user();
        let userId = Meteor.userId();
        let customerId = [userId]
        self.subscribe('getCustomerDetails', () => [customerId], {
            onReady: function() {
                self.helpers({
                    currentUser: () => {
                        return Meteor.users.findOne({
                            _id: Meteor.userId()
                        });

                    }
                })
            }
        });
        // console.log(Meteor.users.findOne({
        //     _id: Meteor.userId()
        // }))

        self.data = {};
        self.data.cb1 = true;
        self.isChecked = true;
        CurrentPage.setTitle('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
                        };
                    }
                })
            }


        });
        self.getClicked = (dynamicSetting, settingId, detail) => {
            self.dataArry = {};
            self.dataChk = {};

            self.generalSetting = {};


            console.log(self.generalSettings.generalSetting)


            Meteor.call("updateStatus", detail, function(error, result) {
                if (error) {

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

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

                }
            });


        }

    }
}

}) 而服务端js就像`Meteor.methods({ 更新状态:功能(设置,状态){ 让_ids = [] 控制台日志(设置) 如果(设置。$$hashKey) 删除设置。$$hashKey

    GeneralSettings.update({
        _id: settings._id

    }, {
        $set: {
            "status": settings.status
        }
    }, {
        "multi": true
    })
}

})

html 就像

<div layout="column" layout-wrap layout-padding layout-fill class="littleWhiteFrame" ng-cloak>
<div>
    <div layout="row" class="requestDetailElems">
        <h4 class="md-subhead" layout-marginSettings> Settings</h4>
        <span flex></span>
    </div>
</div>
<md-divider></md-divider>
<div layout="row">
<fieldset class="standard">
    <div layout-gt-sm="row"  ng-repeat="detail in generalSettingsCtrl.generalSettings.generalSetting">
        <md-checkbox aria-label="Checkbox 1"  ng-model="detail.status" ng-change="generalSettingsCtrl.getClicked(generalSettingsCtrl.detail[$index],currentUser._id,detail)">

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

我有一个用于设置的 mongo 集合,其中包含 id、name、description、tag、status 等字段。

当菜单被选中时,状态将变为 true。

现在我想对这段代码进行一些更改,我想为不同的用户制作不同的菜单。所以在用户集合中我必须推送选定的菜单。 例如:user1,user2 如果 user1 选择 home,about us 从设置然后在他的仪表板主页和 aboutus 应该被查看。如果 user2 选择 home 和 testimonial,那么当他登录 home 和 testimonial 时,应该查看 not home 和 aboutus

【问题讨论】:

    标签: angularjs meteor


    【解决方案1】:

    您可以创建单独的菜单栏并使用 ng-if 显示它们。

    【讨论】:

      【解决方案2】:

      你只需将设置集合推送到用户集合。你可以根据用户ID获取数据。

      Meteor.users.update(
      

      { _id: userId }, { "$push": { "settings": settingDetails } } )

      【讨论】:

        猜你喜欢
        • 2015-12-12
        • 2018-03-02
        • 2017-05-31
        • 1970-01-01
        • 2018-10-09
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        • 2015-11-14
        相关资源
        最近更新 更多