开发者问题收集

如何在 Vue.js 中使用对象道具?

2016-12-30
1748

vue.js 文档中有此示例:

props: ['initialCounter'],
data: function () {
  return { counter: this.initialCounter }
}

但是, initialCounter 在我的模板中有效,但 counter 无效。

我做错了什么?

这是完整代码:

<update-counter initialCounter="1" inline-template>
    <div>
        <div class="panel panel-default">
            <div class="panel-heading">My Counter @{{ initialCounter }}</div>

编辑:我缩小了问题范围。如果我传递这样的变量,它就可以工作:

<update-partner :initial-counter="1" inline-template>

但是如果我传递一个对象,它就不起作用:

<update-partner :initial-counter="users" inline-template>

当我传递该对象时, initialCounter 在我的模板中起作用,但 counter 不起作用。

当我传递一个整数时,两个变量都起作用。

当我传递一个对象时,我需要做些什么不同的事情?

1个回答

因此,当您在组件中执行以下操作时,就会出现问题:

props: ['initialCounter'],
data: function () {
  return { counter: this.initialCounter }
}

您正在为 counter 分配 initialCounter 的初始值,稍后您会在 mounted 块中更改该值。如果您需要更改要设置在 counter 中的值,则必须在 initialCounter 上设置一个观察器,如下所示:

  watch:{
    initialCounter: function(newVal){
      this.counter = newVal;
    }
  }

您可以看到正在运行的 fiddle

Saurabh
2016-12-30