打印当前vue实例可以看到挂载到实例上的ref,但是直接打印ref.xx就会报错undefined
<dv-border-box-13 style="flex: 0 1 33%">
<LineBarChart ref="currentTotal"></LineBarChart>
</dv-border-box-13>
注册子组件,并绑定ref属性
<div class="left-box">
<span>当班合格/不良统计</span>
<dv-border-box-12 style="flex: 0 1 33%">
<LineBarChart ref="currentTotal"></LineBarChart>
</dv-border-box-12>
<span>产品合格率统计</span>
<dv-border-box-13 style="flex: 0 1 33%">
<LineBarChart ref="productionPassRateStatistic"></LineBarChart
></dv-border-box-13>
<span>产能达成率</span>
<dv-border-box-13 style="flex: 0 1 33%">
<LineBarChart ref="productionAchievingRate"></LineBarChart
></dv-border-box-13>
</div>
子组件获取数据
getCurrentTotal() {
let chartData = []
let connection = signalr()
connection.on('SendCurrentTotal', (limit) => {
console.log('SendCurrentTotal 当班统计', limit)
chartData = limit
})
start()
const dataObj = {
yAxisName: '件',
type: ['bar', 'bar', 'line'],
itemTitle: ['良品数', 'NG数', 'NG率'],
chartData: chartData,
}
this.$refs.currentTotal.initChart(dataObj)
},
并在父组件created钩子中调用
created() {
this.getCurrentTotal()
},
使用$nextTick在dom加载完在去获取,还是报undefined
解决:数据赋值在新方法里面实现
直接赋值和创建新的方法赋值实现效果差异是因为什么?
getCurrentTotal() {
let connection = signalr()
connection.on('SendCurrentTotal', (limit) => {
console.log('SendCurrentTotal 当班统计', limit)
this.sendCurrentTotal(limit)
})
start()
},
sendCurrentTotal(limit){
const dataObj = {
yAxisName: '件',
type: ['bar', 'bar', 'line'],
itemTitle: ['良品数', 'NG数', 'NG率'],
chartData: limit,
}
this.$refs.currentTotal.initChart(dataObj)
},
.名字,这种写法没错。可能就是出现在渲染问题上。代码截全点。