这是显示学生表的代码,我尝试将commpulated属性用于学生的全名,但在全名列中显示UNDEFINED
<tr v-for="student in students" :key="student.id">
<td>{{ student.id }}</td>
<td><a href="#" class="nav-link">{{ student.index_no | uppercase }}
</a></td>
<td>{{fullname | capitalize}}</td>
<td>{{fullname | capitalize}}</td>
<td>{{student.department | capitalize}}</td>
<td>{{ student.course | capitalize}}</td>
<td>{{ student.regular_or_weekend | capitalize }}</td>
<td>{{ student.nationality | capitalize}}</td>
<td>{{ student.created_at |datetime }}</td>
这是vuejs代码,所有方法都可以正常工作,但显示出UNDEFINED的计算属性除外。我已经排除了方法
<script>
import { Form, HasError, AlertError } from 'vform'
export default {
data () {
return {
editmode : true, // for edit conditional
students: {}, //student object
// Create a new form instance
form: new Form({
id: '',
index_no:'',
firstname: '',
middlename: '',
lastname: '',
department: '',
course:'',
regular_or_weekend:'',
nationality:''
})
} //end of data()
},
methods:{
}
computed:{
fullname:function(){
return this.firstname+" "+this.middlename+" "+this.lastname;
}
}
}
</script>
答案 0 :(得分:1)
您似乎有很多学生,这意味着您不能以这种方式使用计算属性,因为这意味着只有一个fullname
属性,而实际上有多个(每个学生一个)>
您在这里有两个可能的选择。 (代码未经测试)
制作一个名为Student的新组件,并将v-for中的Student对象作为道具传递给它,就像这样
<tr v-for="student in students" :key="student.id">
<Student :student="student"/>
</tr>
Student组件将包含用于从列表中呈现单个学生的所有HTML,并且由于Student组件仅呈现单个Student,因此您可以使计算属性类似于最初的方式。这可能是做到这一点的“最佳实践”。
computed:{
fullname:function(){
return this.student.firstname+" "+this.student.middlename+" "+this.student.lastname;
}
}
您可以使用计算所得的属性将新属性简单地添加到学生数组中
computed:{
studentsWithFullname: function(){
return this.students.forEach(element => {
element.fullname = element.firstname + " " + element.middlename + " " + element.lastname
});
}
}
然后遍历“ studentsWithFullname”数组而不是students数组(或任何您想调用的数组)并输出全名
不必理会任何这些,只需像已经做过的那样直接在模板中使用student.firstname + " " + student.middlename + " " + student.lastname
答案 1 :(得分:0)
使用方法代替学生的计算属性。
模板:
#load library
require(data.table)
# convert data.frame to data.table
setDT(df)
# make a new data.table with two columns. First one has the counts by each level of firstcol. Second one has the count minus the number of NA cases:
df[, .(FirsrcolCount = .N,
secondCol = .N - sum(is.na(secondcol))),
by = firstcol]
JavaScript:
<tr v-for="student in students" :key="student.id">
<td>{{getFullName(student) | capitalize}}</td>