【发布时间】: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
【问题讨论】: