vue.js - 如何从 Vue.js 中另一个组件的方法渲染组件
问题描述
我有一个包含选择器输入的表单,该表单位于弹出窗口中。现在我的选择器没有显示,因为它在主窗口加载后呈现。如何制作呈现我的选择器 (renderPositions) 的组件,从方法 showPopup() 呈现它(在弹出窗口出现后)?提前致谢。
var usersControllerApi = Vue.resource('./users_controller/all{/id}')
var positionsControllerApi = Vue.resource('./positions_controller/all{/id}')
Vue.component('users', {
props: ['listOfUsers'],
template: '<tbody>' +
'<tr v-for="user in listOfUsers" >' +
'<td class="first_column">{{user.login}}</td>' +
'<td>{{user.fullName}}</td>' +
'<td>{{user.position.positionDescription}}</td>' +
'<td>{{user.active ? "Да" : "Нет"}} </td>' +
'<td>{{user.createDate}}</td>' +
'<td>{{user.lastUpdateDate}}</td>' +
'<td class="seven_column"><button>Изменить</button></td>' +
'<td class="eight_column"><button>Удалить</button></td>' +
'</tr>' +
'</tbody>',
created: function () {
usersControllerApi.get().then(result => result.json().then(data => data.forEach(user => {
this.listOfUsers.push(user)
}
)))
}
});
Vue.component('positions', {
props: ['listOfPositions'],
template: '<select class="form_input" id="positionsselector">' +
'<option v-for="position in listOfPositions" v-bind:value="position.positionDescription">{{position.positionDescription}}</option>' +
'</select>',
created: function () {
positionsControllerApi.get().then(result => result.json().then(data => data.forEach(pos => {
this.listOfPositions.push(pos)
}
)))
}
});
var renderUser = new Vue({
el: '#tableBody',
template: '<users :listOfUsers="listOfUsers" />',
data: {
listOfUsers: []
}
});
var renderPositions = new Vue({
el: '#positionsselector',
template: '<positions :listOfPositions="listOfPositions"/>',
data: {
listOfPositions: []
}
});
var createButtonScope = new Vue({
el: '#createButtonScope',
data: {
isPopupVisible: false,
login_input:'',
password_input:'',
repassword_input:'',
surname_input:'',
name_input:'',
},
methods: {
showPopup() {
this.isPopupVisible = true;
},
closeModalWindow() {
this.isPopupVisible = false;
},
validate() {
}
}
})
var comp = Vue.component('add-popup', {
props: {
header_title: '',
button_1_name: '',
button_2_name: ''
},
template: ' <div id="popup_window">\n' +
' <div class="Dialog">\n' +
' <div class="Dialog_overlay">\n' +
' <div class="Dialog_content">\n' +
' <div class="Dialog_header">\n' +
' <span class="modal_header_text">{{header_title}}</span>\n' +
' <span><i class="material-icons" @click="closePopup">close</i></span>\n' +
' </div>\n' +
' <div class="Dialog_body">\n' +
' <slot></slot>\n' +
' </div>\n' +
' <div class="Dialog_footer">\n' +
' <div class="modal_button_1_container">\n' +
' <button class="modal_button_1" @click="validate_form">Создать</button>\n' +
' </div>\n' +
' <div class="modal_button_2_container">\n' +
' <button class="modal_button_2" @click="closePopup">Отмена</button>\n' +
' </div>\n' +
' </div>\n' +
' </div>\n' +
' </div>\n' +
' </div>\n' +
' </div>',
methods: {
closePopup() {
this.$emit('close_popup') элементу
},
validate_form() {
this.$emit('validate')элементу
}
},
data: function () {
return {
}
}
});
解决方案
推荐阅读
- vba - 在函数中选择工作表作为字符串或整数
- html - 图像在较小的设备上移动到下一行
- latex - LaTeX 中多个图形的多个脚注
- html - 为什么 flexbox 子项不拉伸以填充父容器(包括 jsfiddle)?
- c++ - 什么是 16 字节有符号整数数据类型?”
- php - 继续从获取解码的 JSON 数据中获取“数组”?
- java - 如何导入jar的所有依赖项?
- json - Angular:无法读取 json 对象中的属性“video_link”
- angular5 - Angular 6 - 为什么使用@ngrx/store 而不是服务注入
- c++ - Prettify 从命令行编译 C++