Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数在v-for循环的第一个选择中推送所有数据_Javascript_Function_Vue.js - Fatal编程技术网

Javascript 函数在v-for循环的第一个选择中推送所有数据

Javascript 函数在v-for循环的第一个选择中推送所有数据,javascript,function,vue.js,Javascript,Function,Vue.js,想调用myv-for..中的函数for all循环,但我的函数仅在第一次选择时推送数据 <td style="min-width: 75px" v-for="date of dates" v-bind:key="date.id"> <!-- Boucle for sur la date pour chaque utilisateur --> <form v-if="weekEnd(date)"> <select v-bin

想调用myv-for..中的函数for all循环,但我的函数仅在第一次选择时推送数据

<td style="min-width: 75px" v-for="date of dates" v-bind:key="date.id">
    <!-- Boucle for sur la date pour chaque utilisateur -->
    <form v-if="weekEnd(date)">
        <select v-bind:placeholder="generateTasksAM(user.id, date)" v-on:change="deleteTaskAM(user.id,date)" id="matin" size="1">

        </select>
    </form>
</td>

generateTasksAM:函数(用户、日期){
对于(var i=0;iif(this.assignments[i].heured,但我可以建议您更改代码的结构,而无需使用函数来构建选择

实现它的一种方法是使用模板复制您在函数中所做的操作

这只是一个想法,不是工作代码

模板:


{{option}}
脚本:

方法:{
检查日期(日期、开始){
var date1=新日期(日期);
var date2=新日期(开始);
返回日期1.getFullYear()==date2.getFullYear()&&date1.getMonth()==date2.getMonth()&&date1.getDate()==date2.getDate()
}
}

希望它对您有所帮助。

您的问题是,在按下选项时,您总是会得到相同的选择

var select = document.getElementById("matin");

解决方案

为选择器分配不同的ID

var-select=document.getElementById('matin-'+SOME_ID);

所需的修改

在模板循环中:

在模板中选择:

generateTasksAM功能中:

generateTasksAM: function(user, date, index) {
    for (var i = 0; i < this.assignments.length; i++) {
        var date1 = new Date(date);
        var date2 = new Date(this.assignments[i].start);

        if (user === this.assignments[i].User.id) {
            if (
              date1.getFullYear() === date2.getFullYear() &&
              date1.getMonth() === date2.getMonth() &&
              date1.getDate() === date2.getDate()
            ) {
            if (this.assignments[i].heuredebut <= "12:00:00") {
                for (var j = 0; j < this.options.length; j++) {
                    if (this.assignments[i].Task.Project.name === this.options[j]) {
                        var select = document.getElementById("matin-" + index);
                        select.options[j] = new Option(this.options[j],this.options[j],true,true);
                    } else {
                        var select = document.getElementById("matin-" + index);
                        select.options[j] = new Option(this.options[j],this.options[j],false,false);
generateTasksAM:函数(用户、日期、索引){
对于(var i=0;iif(this.assignments[i].h),但您使用的是
getElementById(“matin”)
generateTasksAM
方法中。因此它会从v-for返回第一个元素。这就是为什么它只影响第一个元素。顺便说一句,在vuejs中直接接触dom是一种不好的做法。换句话说,您在serveal元素上使用相同的id,而只获取第一个元素很好!但是当选项为“”(空)时select不是createword,它应该是。如果条件匹配,则应呈现
options
数组的每个元素,即使是emptyok。因此,如果没有条件匹配,我希望使用相同的select,但使用“”在Selected中,您可以添加另一个带有
v-else
指令的模板标记,并在其中添加一个不带
v-for
的选项标记。我希望当日期没有任务但他不工作时,空值为call,但我不能同时在两个位置增加一些ID…我更新了我的答案,并对此进行了必要的修改解决方案
generateTasksAM: function(user, date, index) {
    for (var i = 0; i < this.assignments.length; i++) {
        var date1 = new Date(date);
        var date2 = new Date(this.assignments[i].start);

        if (user === this.assignments[i].User.id) {
            if (
              date1.getFullYear() === date2.getFullYear() &&
              date1.getMonth() === date2.getMonth() &&
              date1.getDate() === date2.getDate()
            ) {
            if (this.assignments[i].heuredebut <= "12:00:00") {
                for (var j = 0; j < this.options.length; j++) {
                    if (this.assignments[i].Task.Project.name === this.options[j]) {
                        var select = document.getElementById("matin-" + index);
                        select.options[j] = new Option(this.options[j],this.options[j],true,true);
                    } else {
                        var select = document.getElementById("matin-" + index);
                        select.options[j] = new Option(this.options[j],this.options[j],false,false);