我在点击按钮时显示Bootstrap模态对话框(UserPermission),其中我正在显示显示用户列表的jqxTreeGrid。每个用户都有一些权限设置。
所以我有以下资源来设置Bootstrap模态对话框:
我有一个名为UserPermissionModel.js的
的Backbone模型定义([' app','下划线','骨干'],
function(app, _, Backbone)
{
"use strict";
var UserPermissionModel = Backbone.Model.extend({
defaults: {
userList:[],
permissions:[]
}
});
return UserPermissionModel;
});
我有一个View UserPermissionView,使用以下方法
initialize: function () {
var self = this;
self.model = new UserPermissionModel();
}
On渲染后,我正在调用一个webservice,它给我一个用户列表,我将其保存在Model中的userList数组中。由于这是我第一次设置权限,因此我将Permission数组设置为默认值。
afterRender:function(){ var self = this;
self.model.set("userList", []);
self.model.set("permissions", []);
// Get all the users save them in model
AllUsers.fetch(function (Users) {
Users.each(function (user) {
// create the permission object reference
var permission = new PermissionInfo();
// set defaults
permission.createJSON({
userId: user.attributes.id,
read: "",
write: ""
});
// Save the group in model
self.model.get("userList").push(user);
// Save the permission in model
self.model.get("permissions").push(permission);
});
// Show the groups in jqxTreeGrid
self.loadListGrid();
}, function (error) {
// error handling
});
},
获得userList后,我使用方法loadListGrid在jqxTreeGrid上显示它们。
在jqxTreeGrid ready方法中,我正在初始化popover。下面是我在Backbone视图的loadListGrid方法中放置的jqxTreeGrid代码
$("#jqxListGrid").jqxTreeGrid({
width: '100%',
source: dataAdapter,
theme: 'iltreegrid',
columnsHeight: 35,
ready: function() {
// initialize the Permission Setting Popover
var popOverSettings = {
placement: 'bottom',
container: 'body',
html: true,
selector: '[rel="popover"]',
content: $('#ad_permissionSettingPopover').html()
}
// bind the popover on body
$("body").popover(popOverSettings).parent().delegate('button.btn_permission_ok', 'click', function () {
//that.setDocumentPermissions();
app.pubSub.trigger("permissionPopover:onOk");
$("[rel=popover]").popover("destroy");
$(".popover").remove();
}).on("show.bs.popover", function (e) {
// hide all other popovers before showing the current popover
$("[rel=popover]").not(e.target).popover("destroy");
$(".popover").remove();
}).on("shown.bs.popover", function (e) {
// set the z-index of the popover as it is going behid the jqxTreeGrid Column
$('.popover').css('z-index', '999999');
// add the style class
$('.popover').addClass('jqxtreegridCell-popover');
// get the current value of permission settings and
// mark the radio button checked
app.pubSub.trigger("permissionPopover:onShow");
});
// click on cancel button removes the popover
$("body").popover(popOverSettings).parent().delegate('div.btn_permission_cancel', 'click', function () {
$("[rel=popover]").popover("destroy");
$(".popover").remove();
});
},
columns: [
{
text: '<span class="ilicon ilicon-user"></span>' + app.i18n.t("doc_permission_userName", " User Name"),
datafield: 'userName',
cellsrenderer: userIconRenderer,
width:'40%'
},
{
text: '',
datafield: 'id',
width: '0%',
hidden: true
},
{
text: '<span>' + app.i18n.t("doc_permission_userType", "User Type") + '</span>',
datafield: 'userType',
width: '18%'
},
{
text: '<span>' + app.i18n.t("doc_permission_email", "Email") + '</span>',
datafield: 'userEmail',
width: '18%'
},
{
text: '<span>' + app.i18n.t("doc_permission_permissionSetting", "Permission Setting") + '</span>',
width: '24%',
cellsrenderer: permissionSettingRenderer,
sortable: false
}
]
});
网格中的每个用户都有一个按钮,显示带有一些单选按钮的弹出窗口。检查该用户的默认权限(我从模型中存储的权限数组中读取)。我可以为该用户选择不同的权限,并在该模型中更新该特定用户的权限数组。
希望我能够解释这个功能。
现在,当我第一次打开模态时。一切都很完美。 但当我关闭模态并再次打开它时,这就是问题发生的地方。 当我阅读里面的许可时,显示了.bs.popover&#34;方法,Backbone Model在Permission数组中具有我从未设置的值。它给了我错误的价值观。但在任何其他方法中它都具有正确的值
我尽力在这里复制场景。如果有人有任何想法请评论。
由于 •亚米恩