【发布时间】:2018-08-13 06:22:41
【问题描述】:
我有一个主题菜单(例如“关于我们”、“支持”),并且我希望能够知道当前处于活动状态的主题。单击主题时,它将成为活动主题。将其视为将设置活动路由的路由器的替代品。在我的情况下这是不可能的,因为我在 SharePoint 2010 中工作......在内容编辑器中。所以我决定在我的 Vue 实例中添加一个 activeTopic 变量。
Vue 实例
new Vue({
el: '#app',
data: {
activeTopic: '',
}
});
这是因为 activeTopic 必须更新另一个组件并根据活动主题显示一些数据。就像显示子路由的路由器一样。
主题组件
Vue.component('topic', {
props: ["title"],
methods: {
setActiveTopic: function (title) {
activeTopic = title;
},
isActiveTopic: function (title) {
return activeTopic == title;
}
},
template: `
<div v-bind:class="{active: isActiveTopic(title)}" v-on:click="setActiveTopic(title)">
<p v-text="title"></p>
</div>
`
});
setActiveTopic 功能在我单击时正常工作;它更新 activeTopic。但是 isActiveTopic 函数给了我这个错误:
Error in render: "ReferenceError: activeTopic is not defined"
我不明白的是我可以编辑 activeTopic 变量但我无法进行比较?我试过设置一个默认值,但它仍然说它是未定义的。
【问题讨论】:
-
vue 抛出了正确的错误。 `activeTopic` 没有在任何地方定义供您分配。它应该被定义并作为道具传递给你的组件
标签: vue.js vue-component