Vue.js изменяет данные и время рендеринга? - PullRequest
0 голосов
/ 19 ноября 2018

Я новичок в Vue.js.

Я хотел бы изменить данные в методах и изменить представление в соответствии с данными.

// template
<div v-if="currentGraphType.type === 'foo'">
  <!-- Some other graphs -->
</div>
<div v-else id="plotly-graph" />

// methods
onClickGraphType(graphType: { type: string, name: string }) {
  this.currentGraphType = graphType;
  this.renderGraph();
},

renderGraph() рендеринг SVGэлементы в div#plotly-graph

Но когда onClickGraphType выполняется и меняет currentGraphType на 'foo', граф не отображается.

Я думаю, <div v-else id="plotly-graph" /> почему-то не отображаетсядо выполнения this.renderGraph().

Не понимаю ли я, как работают данные Vue.js?

1 Ответ

0 голосов
/ 19 ноября 2018

ОК, вы звоните this.renderGraph() синхронно, прежде чем Vue сможет обновить DOM.

Попробуйте отложить this.renderGraph() с $nextTick():

onClickGraphType(graphType: { type: string, name: string }) {
  this.currentGraphType = graphType;
  this.$nextTick(() => this.renderGraph());
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...