【发布时间】:2019-09-02 10:37:14
【问题描述】:
我正在尝试在我的应用中构建拖放功能,为此我正在使用 Muuri 库。
当用户更改事物的顺序(在我的情况下是技能卡)时,我需要获取新顺序并将其发布到服务器。我可以获取 HTML 元素的列表,但是我无法访问该卡上的 skillName 属性(这也是一个 Vue 组件)。
我不想获得特定的 div 和/或 innerText ,因为它可能会在未来发生变化,所以我能想到的最干净的解决方案是为组件提供一个属性名称,并且在用户更改了位置之后卡片,我只是从 HTMLElement 那里得到那个属性。
这就是我在 .vue 文件的 template 部分创建技能卡的方式:
.visible-skills
.visible-skills-item(v-for='value in visibleSkills')
skill-card(:skillName='value')
这就是我初始化 Muuri 的方式:
this.grid = new Muuri('.visible-skills', {
dragEnabled: true,
items: null
})
这就是我在技能卡组件中使用道具的方式(我正在使用打字稿):
class SkillCard extends Vue {
@Prop() skillName: String
}
这就是我尝试访问skillName 属性的方式:
this.grid.on('dragReleaseStart', () => {
// this.grid.getItems() returns all skill-cards
let neworder = this.grid.getItems().map((item) => {
return item.getElement().getAttribute('skillName')
})
})
item.getElement().getAttribute('skillName') 返回 null。
当我console.log(item.getElement().getAttributeNames()) 时,我只能看到class 和style。我想我也可以看到skillName,因为它不也是一个属性吗?
【问题讨论】:
-
你能提供工作小提琴吗?