點(diǎn)擊加號(hào),頁面沒響應(yīng),沒變化。為什么了?
vue調(diào)試工具里顯示,我的children 屬性里已經(jīng)插入值了,但頁面不渲染。
代碼里有數(shù)據(jù),大家,可以本地跑一下。
調(diào)用頁面
<template>
<div>
<div class="grid-content ">學(xué)生類型
<ul id="stuTree" class="yunTreeBox">
<yunTree :menuArray = "stuResource"></yunTree>
</ul>
</div>
</div>
</template>
<script>
import yunTree from './yunTree.vue'
export default {
data() {
return {
stuResource:[]
};
},
mounted: function () {
var self = this;
setTimeout(function(){
var stuArray= [{"resourceDesc":"學(xué)生 端","resourceId":101,"resourceParentId":-1,"resourceName":"學(xué)生類型","resourceUrl":""},{"resourceId":1,"resourceName":"課堂板書","resourceUrl":"/main/blackboardWriting","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-課堂板書","resourceParentId":101,"resourceSort":1,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":2,"resourceName":"課中檢測(cè)","resourceUrl":"/main/kezhongce","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-課中檢測(cè)","resourceParentId":101,"resourceSort":2,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":3,"resourceName":"課后作業(yè)","resourceUrl":"/main/demoShow","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-課后作業(yè)","resourceParentId":101,"resourceSort":3,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":4,"resourceName":"單元檢測(cè)","resourceUrl":"/main/tutoring","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-單元檢測(cè)","resourceParentId":101,"resourceSort":4,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":5,"resourceName":"階段檢測(cè)","resourceUrl":"/main/subjectTest","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-階段檢測(cè)","resourceParentId":101,"resourceSort":5,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":6,"resourceName":"錯(cuò)題記錄","resourceUrl":"/main/errorRecord","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-錯(cuò)題記錄","resourceParentId":101,"resourceSort":6,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":7,"resourceName":"個(gè)人中心","resourceUrl":"","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-個(gè)人中心","resourceParentId":101,"resourceSort":7,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":8,"resourceName":"我的收藏","resourceUrl":"/main/favourite","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-個(gè)人中心-我的收藏","resourceParentId":7,"resourceSort":8,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":9,"resourceName":"學(xué)校信息","resourceUrl":"/main/schoolInfo","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-個(gè)人中心-學(xué)校信息","resourceParentId":7,"resourceSort":9,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null},{"resourceId":10,"resourceName":"個(gè)人設(shè)置","resourceUrl":"/main/peopleSet","resourceDesc":"產(chǎn)品后臺(tái)管理系統(tǒng)-學(xué)生端-個(gè)人中心-個(gè)人設(shè)置","resourceParentId":7,"resourceSort":10,"resourceType":1,"resourceProductId":1,"createDate":1526623438000,"updateDate":1526623440000,"selected":0,"resourceIcon":null,"resourceBeen":null}]
self.stuResource = stuArray;
},3000)
},
computed: {
},
methods:{
},
components: {
yunTree
}
};
</script>
<style>
</style>
樹的父組件
yunTree.vue
<template>
<ul>
<treeRecusive v-if="rootData" :itemData="rootData">
</treeRecusive>
</ul>
</template>
<script>
import treeRecusive from './treeRecursive.vue'
export default {
name:'yunTree',
data() {
return {
rootData:null
};
},
props: {
menuArray: Array
},
watch:{
menuArray(arry){
this.assembleData(arry)
}
},
computed: {
},
methods:{
assembleData(menuArray){
menuArray.forEach(function(item1,index){
item1.createTime = new Date().getTime();
menuArray.forEach(function(item2,index){
if(item1.resourceId==item2.resourceParentId){
if(item1.children){
item1.children.push(item2)
}else{
item1.children =[item2]
}
}
})
})
this.rootData = menuArray[0]||null;
}
},
created(){
this.assembleData(this.menuArray)
},
components: {
treeRecusive
}
};
</script>
樹的子組件遞歸調(diào)用
treeRecursive.vue
<template>
<li>
<div :class="{bold: isFolder}" @click="toggle" @dblclick="changeType">
<span v-if="isFolder">[{{ open ? '-' : '+' }}]</span>
{{ itemData.resourceName }}
</div>
<ul v-show="open" v-if="isFolder">
<treeRecusive class="item" v-for="(itemData, index) in itemData.children" :key="itemData.createTime" :itemData="itemData">
</treeRecusive>
<li class="add" @click="addChild">+</li>
</ul>
</li>
</template>
<script>
export default {
name:'treeRecusive',
props: {
itemData: Object
},
data() {
return {
open: false
};
},
computed: {
isFolder: function() {
return this.itemData.children &&
this.itemData.children.length
}
},
methods: {
toggle: function() {
if (this.isFolder) {
this.open = !this.open
}
},
changeType: function() {
if (!this.isFolder) {
Vue.set(this.itemData, 'children', [])
this.addChild()
this.open = true
}
},
addChild: function() {
this.itemData.children.push({
resourceDesc:"",
resourceId:'',
resourceParentId:this.itemData.resourceId,
resourceName:"新項(xiàng)",
resourceUrl:"",
createTime:new Date().getTime()
})
}
},
components: {}
};
</script>
1.props值賦給子組件自身屬性
2.watch props變化
3.改變自身data屬性
這樣子組件dom就會(huì)變化
子組件代碼改了下:
<script>
export default {
name: 'treeRecusive',
props: {
itemData: Object
},
data() {
return {
open: false,
node: this.itemData
}
},
computed: {
isFolder: function() {
return this.node.children && this.node.children.length
}
},
methods: {
toggle: function() {
if (this.isFolder) {
this.open = !this.open
}
},
changeType: function() {
if (!this.isFolder) {
Vue.set(this.node, 'children', [])
this.addChild()
this.open = true
}
},
addChild: function() {
console.log('come here')
this.node.children.push({
resourceDesc: '',
resourceId: '',
resourceParentId: this.node.resourceId,
resourceName: '新項(xiàng)',
resourceUrl: '',
createTime: new Date().getTime()
})
}
},
components: {},
watch: {
itemData: {
handler: function(val, oldVal) {
console.log('come here watch', val)
this.node = val
},
deep: true
}
}
}
</script>
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。