在写项目时有一个需求是要对表格中的数据根据状态不同可进行不同的操作,有一种状态就是需要把该行的数据作为一个总任务,通过点击拆分按钮打开弹框的形式来进行自定义拆分成若干个子任务,并且在拆分后可以对每一个子任务进行重新自定义分配份数,同事底部需要显示任务的总份数,以及分配完后还剩余的份数。大概的效果就是这样,样式没去改,请忽略。。。
这里面遇到了一个问题,就是当子任务设置的份数大于剩余份数时,子任务还是设置成功了,剩余份数此时就变成负的了。这显然不是我想要的效果。我需要当给子任务设置份数的时候,一旦设置份数大于剩余份数时,就把剩余的份数全部加给当前设置的子任务,而剩余份数为0。因为我在watch里对整个表单的数据进行了监听,所以就要考虑一个先后的问题,当子任务设置的份数大于剩余份数时,我需要在剩余份数变成负数之前,把剩余份数全部给到当前设置的子任务。想起来Vue中的input事件,测试过input事件会在watch之前触发。测试结果如下:
于是乎,不妨在input事件中先拿到当前设置的子任务的索引,然后在watch中通过判断剩余份数是否小于0,一旦触发小于0这个条件,便把当前设置的子任务份数强行赋值成总分数减去已分配的份数,这样一来,当前设置的子任务份数没有越界,也拿到了有效最大份数,而剩余份数刚好为0,同样没有越界。ok,说到现在,把代码大概上一下。
HTML
1 | <template> |
JS
1 | <script> |
这里只是一个子组件,一些参数要从表格的那个父组件拿过来。这里需要利用正则做一个限定,输入第一位时只能输入1-9的数字,第一位以后可以输入0-9的数字,因为用replace时需要字符串的变量,但同时因为后面要进行求和与做差,在限定的外面再强制转换成number类型的,以防当某一个子任务的份数为0时,剩余份数显示NaN。
文笔不是很好,加上上班抽空写的,有点乱,见谅~
一个正在成长的前端小白~