【发布时间】:2021-05-06 08:55:15
【问题描述】:
我正在使用 Vusax 库的 vs-popup 组件来显示内容,我可以通过下面代码中的方法关闭 vs-popup。我实际上在弹出窗口中有一个表单,所以我的问题是如何在成功消息后自动关闭 vs-popup。
这里是 User.vue
HTML
<vs-button @click="popupSettings = true" > Settings</vs-button>
<vs-popup title="Settings" :active.sync="popupSettings ">
<user-settings>
<vs-button color="dark" @click="close()">Cancel</vs-button> //This is the slot
</user-settings>
</vs-popup>
JS
close () {
return this.popupSettings = false
},
这里是 UserSettings.vue
HTML
<div class="form-group">
<slot></slot>
<vs-button @click="saveSettings($event)" >Save</vs-button>
</div>
JS
this.$http.put(/settings, params)
.then((response) => {
this.alert('success', 'Success', 'Settings saved successfully!')
// Here i want to close the vs-popup but that is in User.vue
})
请帮帮我,我该怎么做。
【问题讨论】:
-
您可以使用您的
.then从UserSettings.vue向父级发送一个事件,在父级上观看此事件并在那里调用close()。更丑陋的解决方案是使用$parent和一些$refs来触发close()。 -
能否请您在我的代码中显示它,因为我想知道我哪里出错了
-
我明白了,非常感谢
-
我已经写了一个答案来告诉你如何去做(我花了一些时间来重现你的用例)。我不确定我这样做是否可行,或者您是否真的需要在这里传递一个插槽,在这种情况下您可以使用作用域插槽,告诉我,我会向您展示这个例子(更高级一点)。
-
非常感谢,就像我第一次理解你所说的那样,我实施了,我得到的答案与你发给我的答案相似。所以这里不需要作用域槽。那么你对 ag-grid table 有什么想法吗?