[Vue warn]: Error in render: "TypeError: Unable to get property 'Id' of undefined or null reference
[Vue warn]: Error in render: "TypeError: Unable to get property 'Id' of undefined or null reference
使用 chrome、firefox、opera 和 internet explorer 对其进行了测试
并且该错误仅发生在 firefox 中。
我在 vue js 中有两个计算属性,它们几乎同时发生变化。
当我更改我的 select 框时,两者都会被触发,因为当我 select select 框内的不同选项时 this.gekozenWinding
被更改。
这是我对这两个属性的代码:
kant() {
if (this.gekozenWinding != null) {
var id = this.haalID(this.windings, this.gekozenWinding);
parseInt(id);
if (id < 5 && id > 0) return true;
else {
return false;
}
}
},
graden() {
if (this.gekozenWinding != null) {
var id = this.haalID(this.windings, this.gekozenWinding);
switch (id) {
case "1":
return "180"; break;
case "2":
return "0"; break;
case "3":
return "270"; break;
case "4":
return "90"; break;
case "5":
return "180"; break;
case "6":
return "0"; break;
case "7":
return "270"; break;
case "8":
return "90"; break;
}
} else {
return "0";
}
}
我的方法 haalID()
haalID(lijst, item) {
/*
1.Filters out given item(string) from a lijst(array).
2.Gets the ID from the filtered object.
3. returns the ID
*/
var id = lijst.filter(i => i.Descriptions[0].Description == item);
id = id[0].Id;
return id;
}
这是我的模板
<div class="row">
<div class="form-group col-9">
<label>Winding</label>
<select
class="form-control"
v-model="gekozenWinding"
>
<option
v-for="winding in windings"
v-bind:key="winding.Id"
>{{winding.Descriptions[0].Description}}</option>
</select>
</div>
</div>
<div v-if="gekozenWinding != null && gekozenWinding != 'To determine'">
<div class="parent1" v-if="kant ">
<img id="fto1" src="../assets/buitenkant.png" alt>
<img
id="fto2"
v-bind:style="{'transform': `rotate(${graden}deg)`}"
src="../assets/A.png"
alt
>
</div>
<div class="parent2" v-else>
<img id="fto3" src="../assets/Binnenkant.png" alt>
<img
id="fto4"
v-bind:style="{'transform': `rotate(${graden}deg)`}"
src="../assets/A.png"
alt
>
</div>
</div>
同样,这只发生在 Internet Explorer(使用 11)中,其他浏览器完美运行。
我什至多次尝试更改我的代码,但无法让它在 IE 中工作
IE11(或与此相关的任何 IE)不支持箭头函数。
caniuse.com/#search=arrow%20functions -
您需要使用像 Babel 这样的编译器,或者避免使用箭头函数。
var id = lijst.filter(function (i) {
return i.Descriptions[0].Description == item;
});
可能这个错误是在模板中。 (你的 windings
有 Id
吗?
在选项的v-for
中将key
更改为$index
<option v-for="(winding, $index) in windings"
v-bind:key="$index">
{{winding.Descriptions[0].Description}}</option>
PS:不确定为什么您在其他浏览器中看不到此错误..
使用 chrome、firefox、opera 和 internet explorer 对其进行了测试 并且该错误仅发生在 firefox 中。
我在 vue js 中有两个计算属性,它们几乎同时发生变化。
当我更改我的 select 框时,两者都会被触发,因为当我 select select 框内的不同选项时 this.gekozenWinding
被更改。
这是我对这两个属性的代码:
kant() {
if (this.gekozenWinding != null) {
var id = this.haalID(this.windings, this.gekozenWinding);
parseInt(id);
if (id < 5 && id > 0) return true;
else {
return false;
}
}
},
graden() {
if (this.gekozenWinding != null) {
var id = this.haalID(this.windings, this.gekozenWinding);
switch (id) {
case "1":
return "180"; break;
case "2":
return "0"; break;
case "3":
return "270"; break;
case "4":
return "90"; break;
case "5":
return "180"; break;
case "6":
return "0"; break;
case "7":
return "270"; break;
case "8":
return "90"; break;
}
} else {
return "0";
}
}
我的方法 haalID()
haalID(lijst, item) {
/*
1.Filters out given item(string) from a lijst(array).
2.Gets the ID from the filtered object.
3. returns the ID
*/
var id = lijst.filter(i => i.Descriptions[0].Description == item);
id = id[0].Id;
return id;
}
这是我的模板
<div class="row">
<div class="form-group col-9">
<label>Winding</label>
<select
class="form-control"
v-model="gekozenWinding"
>
<option
v-for="winding in windings"
v-bind:key="winding.Id"
>{{winding.Descriptions[0].Description}}</option>
</select>
</div>
</div>
<div v-if="gekozenWinding != null && gekozenWinding != 'To determine'">
<div class="parent1" v-if="kant ">
<img id="fto1" src="../assets/buitenkant.png" alt>
<img
id="fto2"
v-bind:style="{'transform': `rotate(${graden}deg)`}"
src="../assets/A.png"
alt
>
</div>
<div class="parent2" v-else>
<img id="fto3" src="../assets/Binnenkant.png" alt>
<img
id="fto4"
v-bind:style="{'transform': `rotate(${graden}deg)`}"
src="../assets/A.png"
alt
>
</div>
</div>
同样,这只发生在 Internet Explorer(使用 11)中,其他浏览器完美运行。
我什至多次尝试更改我的代码,但无法让它在 IE 中工作
IE11(或与此相关的任何 IE)不支持箭头函数。
caniuse.com/#search=arrow%20functions -
您需要使用像 Babel 这样的编译器,或者避免使用箭头函数。
var id = lijst.filter(function (i) {
return i.Descriptions[0].Description == item;
});
可能这个错误是在模板中。 (你的 windings
有 Id
吗?
在选项的v-for
key
更改为$index
<option v-for="(winding, $index) in windings"
v-bind:key="$index">
{{winding.Descriptions[0].Description}}</option>
PS:不确定为什么您在其他浏览器中看不到此错误..