首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类绑定的Vue.js怪异呈现

类绑定的Vue.js怪异呈现
EN

Stack Overflow用户
提问于 2016-05-24 18:35:21
回答 2查看 1.2K关注 0票数 1

基本上,我有一个带有v-for的html表,它循环在一个对象数组上,这里没有什么复杂的东西。当用户单击一行时,它会切换“链接”到给定行的对象的selected属性。

现在,我还使用v-bind:class="{'active': n.selected}"设置了一个简单的类绑定,其中n是我的对象,但它不更新。现在更奇怪的是,我使用了vue-cli中的webpack模板,当我:

  • 选择一组行(没有绑定活动类)
  • 更新代码
  • 点击F5触发webpack热重装

选定的行突然得到active类,就像CSS所说的那样,直到webpack热重加载重新生成页面。

这是我的代码:

代码语言:javascript
复制
<tr
    v-for="n in node.children"
    track-by="id"
    v-on:click="toggleElement(n)"
    v-bind:class="{'active': n.selected}">
<td>
    <i class="icons">
        <i class="folder yellow icon"></i>
    </i>
</td>
<td><a v-on:click.stop="getLevel(n.id)">{{ n.name }}</a></td>
<td><span v-if="n.modification_date">{{ n.modification_date | moment "calendar"}}</span><span v-else>-</span></td>
<td><span v-if="n.size">{{ n.size }}</span><span v-else>-</span></td>

以及javascript方法

代码语言:javascript
复制
toggleElement: function(element) {
            element.selected =  !!(element.selected === undefined || !element.selected);
        },

现在,更详细的是,ajax调用正在检索对象,selected属性从一开始就不存在。

有什么建议或解决办法吗?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-25 00:56:17

  • 默认情况下,无法跟踪在创建vue实例后添加的属性。
  • 但是,您可以调用一些方法告诉vue添加了新的属性: vm.$set('selected',true) //这将使"selected“propertie可跟踪
票数 1
EN

Stack Overflow用户

发布于 2016-05-24 20:23:21

首先,不要忘记在代码中添加关闭的</tr>

第二,在用VueJS创建对象之后,不能在对象上添加新属性。

如果在创建元素时,它的属性selected是未定义的,那么VueJS将不会在其上添加getter/setter,而更改它将不会更新接口。

在将selected属性传递给VueJS之前,您需要添加它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37421355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档