gpt4 book ai didi

javascript - 将可点击表格行中的数据动态显示到模态中

转载 作者:行者123 更新时间:2023-12-02 14:07:32 25 4
gpt4 key购买 nike

我正在尝试创建一个由数据行组成的组件,单击该组件时,会打开一个包含与该表行相关信息的模式。例如,当用户单击“团队 1”时,将出现一个模式,其中显示一个新表,其中显示分配给该团队的每个用户。

我已经设法使用手动提供的参数来实现此目的,但是我不知道如何使模式根据单击的表行动态显示数据。 Here is a link to a jsfiddle that i've made to show my problem.

    getInitialState: function () {
return {
teams:[
{
id: '1',
teamName: 'team 1',
users: ['dave', 'steve', 'jim', 'barry', 'tom', 'harry']
},
]
};


render: function () {
var self = this;
var projectsTable = this.state.teams.map(function (obj, index) {
return (
<tr className="table-teamProject" key={index} data-toggle="modal" data-target="#projectUsersModal" data-id='3'>
<div className="mCellsContainer">
<div className="mCellsNames">{obj.teamName}</div>
<div className="mCellsCount">{obj.users.length} Users</div>
</div>
</tr>
);
});

var projectUsersModal = this.state.teams.map(function (obj, index) {
return (
<div className="modal projectUsersModal fade" id="projectUsersModal" tabIndex={-1} role="dialog" aria-labelledby="myModalLabel">
<div className="modal-dialog" role="document">
<div className="modal-content">
</div>
</div>
</div>
);
});

return (
<div>
<div className="projectsColContainer">
<div className="panel panel-default">
<div className="panel-heading">Projects</div>
<table className="scroll-table">
{projectsTable}
{projectUsersModal}
</table>
</div>
</div>
</div>
);
}

最佳答案

我认为,render() 方法正在为团队数组中的每个团队创建一个隐藏模式,无论用户是否请求显示模式(单击在团队的链接上)或不。更好的方法是根据需要创建特定的模式,即当用户单击团队的链接时。

这可以通过创建一个点击处理程序来完成,在该函数内,您可以通过设置模式所在团队的 id 来修改状态,如下所示:

onClickTeam: function(teamId) {
this.setState({
openModalTeamId: this.state.openModalTeamId == teamId ? null : teamId
});
}

然后在您的 render() 方法中,您需要检查此 openModalTeamId 状态属性是否具有某些值(如果有)并且因为您正在存储团队的 ID在那里,您需要使用 Array.prototype.find 在您的州球队数组中查找这个特定的球队然后使用返回的结果来构造模态的内容。

render: function() {
...

var modalBody;
if (this.state.openModalTeamId) {
var team = this.state.teams.find(function(el) {
return el.id == self.state.openModalTeamId
});

modalBody =
...
<div className="modal-body">
Lets assume this is your modal containing the
following info about the selected team:
<br /><br />
{JSON.stringify(team)}
<br /><br />
<div onClick={(this.onClickTeam.bind(this, team.id))}>
Click me to close
</div>
</div>
...
}

...
}

完成后,您可以将这个新的 modalBody 变量附加到渲染器的 JSX,就像在代码中使用 projectUsersModal 变量一样。如果没有点击任何团队,则此变量将为未定义并且不会显示任何模式。

return (
<div>
<div className="projectsColContainer">
<table className="scroll-table">
{projectsTable}
{modalBody}
</table>
</div>
</div>
);

jsFiddle

关于javascript - 将可点击表格行中的数据动态显示到模态中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39913593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com