my_component.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. //只渲染静态的
  2. // let str = `
  3. // <div class="page-loading">
  4. // <img src='images/load.png'>
  5. // </div>
  6. // `
  7. // let myComponent = Vue.extend({
  8. // template:str ,
  9. // })
  10. //或者动态在data中返回
  11. let str = `
  12. <div>
  13. <div class="bgbox" v-if="showflag"></div>
  14. <div class="pickbox " :class="showflag?'show':''">
  15. <div class="top flexcc">
  16. <div class="left flex0" @click="getCloseFn">取消</div>
  17. <div class="cent"></div>
  18. <div class="right flex0" @click="getConfirmFn">确认</div>
  19. </div>
  20. <div class="box">
  21. <div :class="selectval==ite.dictValue?'act':''" @click="getChange(ite)" v-for="(ite,idx) in datalist" :key="idx">{{ite.dictLabel}}</div>
  22. </div>
  23. </div>
  24. </div>
  25. `
  26. let myComponent = Vue.extend({
  27. template:str ,
  28. props:{
  29. showflag:{
  30. type: Boolean,
  31. default: false
  32. },
  33. datalist:{
  34. type: [Array],
  35. default (){
  36. return [
  37. ]
  38. }
  39. },
  40. dataval:{
  41. type: [String,Number],
  42. default: ''
  43. }
  44. },
  45. data:function(){
  46. return {
  47. childrenTxt:'我是子组件的值哦',
  48. selectlab:"",
  49. selectval:"",
  50. }
  51. },
  52. watch:{
  53. showflag(val){
  54. if(!val){
  55. this.selectval=''
  56. }
  57. },
  58. dataval(val){
  59. this.selectval=val
  60. }
  61. },
  62. methods:{
  63. getCloseFn(){
  64. this.$emit('getclose','a')
  65. },
  66. getConfirmFn(){
  67. var obj={
  68. val:this.selectval,
  69. data:this.selectlab
  70. }
  71. this.$emit('getconfirm',obj)
  72. },
  73. getChange(e){
  74. this.selectval=e.dictValue;
  75. this.selectlab=e;
  76. },
  77. }
  78. })
  79. Vue.component('my-load',myComponent )