属性分组-抽取三级分类组件复用 - 图1

    1. <template>
    2. <div>
    3. <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input>
    4. <el-tree
    5. :data="menus"
    6. :props="defaultProps"
    7. node-key="catId"
    8. ref="menuTree"
    9. @node-click="nodeclick"
    10. :filter-node-method="filterNode"
    11. :highlight-current="true"
    12. ></el-tree>
    13. </div>
    14. </template>
    15. <script>
    16. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
    17. //例如:import 《组件名称》 from '《组件路径》';
    18. export default {
    19. //import引入的组件需要注入到对象中才能使用
    20. components: {},
    21. props: {},
    22. data() {
    23. //这里存放数据
    24. return {
    25. filterText: "",
    26. menus: [],
    27. expandedKey: [],
    28. defaultProps: {
    29. children: "children",
    30. label: "name"
    31. }
    32. };
    33. },
    34. //计算属性 类似于data概念
    35. computed: {},
    36. //监控data中的数据变化
    37. watch: {
    38. filterText(val) {
    39. this.$refs.menuTree.filter(val);
    40. }
    41. },
    42. //方法集合
    43. methods: {
    44. //树节点过滤
    45. filterNode(value, data) {
    46. if (!value) return true;
    47. return data.name.indexOf(value) !== -1;
    48. },
    49. getMenus() {
    50. this.$http({
    51. url: this.$http.adornUrl("/product/category/list/tree"),
    52. method: "get"
    53. }).then(({data}) => {
    54. this.menus = data.data;
    55. });
    56. },
    57. nodeclick(data, node, component) {
    58. console.log("子组件category的节点被点击", data, node, component);
    59. //向父组件发送事件;
    60. this.$emit("tree-node-click", data, node, component);
    61. }
    62. },
    63. //生命周期 - 创建完成(可以访问当前this实例)
    64. created() {
    65. this.getMenus();
    66. },
    67. //生命周期 - 挂载完成(可以访问DOM元素)
    68. mounted() {
    69. },
    70. beforeCreate() {
    71. }, //生命周期 - 创建之前
    72. beforeMount() {
    73. }, //生命周期 - 挂载之前
    74. beforeUpdate() {
    75. }, //生命周期 - 更新之前
    76. updated() {
    77. }, //生命周期 - 更新之后
    78. beforeDestroy() {
    79. }, //生命周期 - 销毁之前
    80. destroyed() {
    81. }, //生命周期 - 销毁完成
    82. activated() {
    83. } //如果页面有keep-alive缓存功能,这个函数会触发
    84. };
    85. </script>
    86. <style scoped>
    87. </style>