初学Vue, 关于data内的数据not defined的问题

34 篇文章 3 订阅
订阅专栏

TL’DR: 原因主要是重复定义了两个data导致的

other:父子组件通信、读取local storage、缩写符号、双向绑定、MVVM

一、问题截图

not defined

二、代码

<!--view层 模板-->
<div id="app" v-cloak>
    <p>{{msg}}</p>
    <div>{{info.name}}</div>
    <div>{{info.grade.level}}</div>
    <a :href="info.url">click me!</a>
</div>
<script>
    var vm = new Vue({
        el: "#app",
        data: {
            msg: "hook function"
        },
        data(){
            return{
                //请求的返回参数格式, 必须和json字符串一样
                info: {
                    name: null,
                    grade: {
                        course: null,
                        level: null
                    }
                }
            }
        }

三、解决

删掉上一个 data:{} 就行了;其实, “data() { }” 为 “data: function(){ }” 的简写,相当于重复写了两个data, 第一个没有生效;

四、关于data的写法

data 定义其实有三种方式:

// 1. Vue 实例中 data 属性
data: {
    msg: "hook function"
},
// 2. 组件化的项目中使用方法
data() {
    return{
    	msg: "hook function"
    }
}
// 3. 在大型项目中 data 会造成数据污染(data 是全局的)将 data 封装成一个函数,我们在实例化组件的时候只是调用了这个函数生成的数据副本,这就避免了数据污染
data: function(){
	var msg = "hook function";
	return msg;
}

注意, 在组件 (component) 里,data 必须声明为 有返回一个初始数据对象函数

export default{
    data(){
        return {
            msg: "hook function",
        }
    },
}

因为在组件情况下,存在多地调用同一个组件的情况。为了不让多处的组件共享同一个data对象,就规定提供 data 函数来返回一个对象;创建新实例后会调用 data 函数,返回初始数据的全新副本数据对象。

总之,组件的 data, 必须是带 return 的 data() 函数这一种形式

另外
在这里插入图片描述

Other

  1. @ 作为 v-on 指令的缩写, 表示监听事件, 用于父子组件之间方法的传递, 为组件绑定事件. 子组件不需要接收, 在子组件的 $listeners 上可以找到, 可以使用 this.$emit('xxx') 手动触发
    另外, "@/api/api"@ 等价于/src 目录的相对路径
  2. : 作为 v-bind 指令的缩写, 表示绑定参数. 用于父子组件之间值传递, 子组件中需要使用 props 接收

一、父子组件通信

ref属性
  • 被用来给元素或子组件注册引用信息(id的替代者)
  • 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
  • 使用方式:
    • 打标识:<h1 ref="xxx">.....</h1><School ref="xxx"></School>
    • 获取:this.$refs.xxx

具体案例

<template>
	<div>
		<h1 v-text="msg" ref="title"></h1>
		<button ref="btn" @click="showDOM">点我输出上方的DOM元素</button>
		<School ref="sch"/>
	</div>
</template>

<script>
	//引入School组件
	import School from './components/School'

	export default {
		name:'App',
		components:{School},
		data() {
			return {
				msg:'欢迎学习Vue!'
			}
		},
		methods: {
			showDOM(){
				console.log(this.$refs.title) //真实DOM元素
				console.log(this.$refs.btn) //真实DOM元素
				console.log(this.$refs.sch) //School组件的实例对象(vc)
			}
		},
	}
</script>
props配置项
  • 功能:让组件接收外部传过来的数据

  • 传递数据:<Demo name="xxx"/>

  • 接收数据:

    • 第一种方式(只接收):props:['name']
    • 第二种方式(限制类型):props:{name:String}
    • 第三种方式(限制类型、限制必要性、指定默认值)
props:{
	name:{
        type:String, //类型
        required:true, //必要性
        default:'老王' //默认值
	}
}

备注:props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到 data 中一份,然后去修改 data 中的数据。

修改案例
  1. 父组件
// 父类向组件通信(父)    记住前面标签属性是子组件的,后面的值是父组件的
// 1. 以下是 template 标签
<button @click="openDialog">显示按钮(如:弹窗)</button>
<Child :childAttribute="parentAttribute" :childAttribute2="parentAttribute2" 
	:visibleFlag="visibleFlag " @childEvent="parentMethod(val)"></Child>
// 2. script 标签
import {Child} from "../component/Child" // 引用组件(1/2)
export default{
     component: {
     	Child, // 引用组件(2/2)
     }
     data(){
     	return{
     		visibleFlag: false, // 设置子组件可见性的参数
     		parentAttribute: {}, // 传给子组件的参数2
     		parentAttribute2: {}, // 传给子组件的参数2
     		returnBackData: {}, // 设置一个接收参数
     	}
     }
     method:{
     	openDialog(){
     		this.visibleFlag = true;
     	},
     	parentMethod(val){ // 需要在子组件使用$emit显式的调用
     		this.visibleFlag = false; // 在子组件传值回来时,将子组件(如:弹窗)的可见性设为不可见
     		this.returnBackData = val; // 接收返回参数
     	}
     }
}
  1. 子组件
// 组件向父类通信(子) 
// 1. 以下是 template 标签
<dialog v-model="visibleFlag" v-if="visibleFlag" xxxxxx>
	....<button @click="confirmBalabala">确认</button>
// 2. script 标签
export default{
	props: ["childAttribute","childAttribute2","visibleFlag"],   // 很重要!必须用这个规定用什么来接收,也就是Child标签上的属性;
	// props还有其他方式,比如规定类型的。上面是最简单最省略的。
    data(){
        return {
        	childAttribute: {},
        	childAttribute2: {},
            visibleFlag: false,
            returnBackData: {
            	balabalaba: "balabala",
            }
        }
    },
    method:{
     	confirmBalabala(){ 
     		// 使用$emit调用(事件名:也就是Child标签的属性, 要传的值)
     		this.$emit('childEvent',this.balabalaba);
     		this.visibleFlag = false; // 关闭组件可见性
    	}
    }    
}
mixin(混入)

混入 (mixin) 提供了一种非常灵活的方式, 用来 分发 Vue 组件中的可复用功能.

一个混入对象可以包含任意组件选项, 当组件使用混入对象时, 所有混入对象的选项将被 “混合” 进入该组件本身的选项.

例子:

// 定义一个混入对象
var myMixin = {
  created: function () {
    this.hello()
  },
  methods: {
    hello: function () {
      console.log('hello from mixin!')
    }
  }
}

// 定义一个使用混入对象的组件
var Component = Vue.extend({
  mixins: [myMixin]
})
  • 选项合并

当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。

比如,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先

var mixin = {
  data: function () {
    return {
      message: 'hello',
      foo: 'abc'
    }
  }
}

new Vue({
  mixins: [mixin],
  data: function () {
    return {
      message: 'goodbye',
      bar: 'def'
    }
  },
  created: function () {
    console.log(this.$data)
    // => { message: "goodbye", foo: "abc", bar: "def" }
  }
})

同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用

var mixin = {
  created: function () {
    console.log('混入对象的钩子被调用')
  }
}

new Vue({
  mixins: [mixin],
  created: function () {
    console.log('组件钩子被调用')
  }
})
// => "混入对象的钩子被调用"
// => "组件钩子被调用"

值为对象的选项,例如 methods、components 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。

var mixin = {
  methods: {
    foo: function () {
      console.log('foo')
    },
    conflicting: function () {
      console.log('from mixin')
    }
  }
}

var vm = new Vue({
  mixins: [mixin],
  methods: {
    bar: function () {
      console.log('bar')
    },
    conflicting: function () {
      console.log('from self')
    }
  }
})

vm.foo() // => "foo"
vm.bar() // => "bar"
vm.conflicting() // => "from self"

全局混入不建议使用

插件

插件通常用来为 Vue 添加全局功能. (插件的功能范围没有严格的限制)

通过全局方法 Vue.use() 使用插件. (需要在调用 new Vue() 启动应用之前完成)

// 调用 `MyPlugin.install(Vue)`
Vue.use(MyPlugin)

new Vue({
  // ...组件选项
})

本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据。

  1. 定义插件:
对象.install = function (Vue, options) {
    // 1. 添加全局过滤器
    Vue.filter(....)

    // 2. 添加全局指令
    Vue.directive(....)

    // 3. 配置全局混入(合)
    Vue.mixin(....)

    // 4. 添加实例方法
    Vue.prototype.$myMethod = function () {...}
    Vue.prototype.$myProperty = xxxx
}
  1. 使用插件案例:

plugin.js

export default {
    install(Vue, x, y, z) {
        console.log(x, y, z)
        //全局过滤器
        Vue.filter('mySlice', function (value) {
            return value.slice(0, 4)
        })

        //定义全局指令
        Vue.directive('fbind', {
            //指令与元素成功绑定时(一上来)
            bind(element, binding) {
                element.value = binding.value
            },
            //指令所在元素被插入页面时
            inserted(element, binding) {
                element.focus()
            },
            //指令所在的模板被重新解析时
            update(element, binding) {
                element.value = binding.value
            }
        })

        //定义混入
        Vue.mixin({
            data() {
                return {
                    x: 100,
                    y: 200
                }
            },
        })

        //给Vue原型上添加一个方法(vm和vc就都能用了)
        Vue.prototype.hello = () => { alert('你好啊aaaa') }
    }
}

main.js

// 引入插件
import plugin from './plugin'

// 使用插件
Vue.use(plugin)

然后就可以在别的组件使用插件里的功能了。

二、选取local storage:

Vue.ls.get(USER_INFO)["username"]
//需安装Vue-ls插件
npm install vue-ls —save //npm
yarn add vue-ls //yarn

三、缩写符号

// 1. @xxx:v-on
<div :class 等效于 <div v-bind:class
// 2. :xxx:v-bind
<div @click 等效于 <div v-on:click
// 3. #xxx:v-slot
<template #footer 等效于 <template v-slot:footer

四、v-model(双向绑定)其实等于两个结合:

  1. 约等于(1/2):v-bind;数据层的改变引起视图层的变化。

  2. 约等于(2/2):监听事件;视图层的变化引起数据层的变化。

v-model 不会触发生命周期,所以组件初始化方法写在比如 mounted() 里面会失效。使用 v-if 会重新渲染整个 dom 树,所以会走生命周期,dialog 标签加上 v-if=“visibleFlag” 属性就行了。

五、MVVM

MVVM

六、v-if vs v-show

  1. v-if 能在 template 上使用, show 不行
  2. if 能搭配 keep-alive 使用, show 不行
  3. if 存在就近复用的问题, 要加 key, show 不用
  4. if 会在一瞬间出现, show 会有弹出动画

七、v-slot 指令

v-slot 取代了 slot 和 slot-scope 的应用, 不过 v-slot 只能用在 template 标签上

  1. slot: 父组件使用 <template> 在子组件 <slot></slot> 处插入内容
  2. 编译作用域 (父组件 在子组件 <slot></slot> 处插入 data)
  3. 后备内容 (子组件 <slot> </slot> 设置默认值)
  4. 具名插槽 (子组件 多个 <slot ></slot> <slot name="first"></slot> 对应被插入内容, 父组件通过 v-slot:name 的方式插入内容, v-slot:name 可以简写为 #name)
    1. <template v-slot:one> 这是插入到one插槽的内容 </template>
  5. 作用域插槽 (父组件 在子组件 <slot> </slot> 处使用子组件 data)
  • slot 和 slot-scope

Parent

<template>
  <div id="app">
    <child-component :msg="gg">
      <ul slot-scope="props123">
        <li>foo: {{props123.foo}}</li>
        <li>msg: {{props123.msg321}}</li>
      </ul>
    </child-component>
  </div>
</template>

<script>
import ChildComponent from "./components/ChildComponent";

export default {
  name: "App",
  components: {
    ChildComponent
  },
  data() {
    return {
      gg: "hello???"
    }
  }
};
</script>
<style>
</style>

Children

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <slot :foo="foo1" :msg321="msg"></slot>
  </div>
</template>

<script>
export default {
  name: "ChildComponent",
  props: {
    msg: String
  },
  data() {
    return {
      foo1: "bar123"
    };
  }
};
</script>

<style scoped>
<!-- 对于所有的 Vue 组件,只要设置了 `<style scoped></style>`, Vue就会给该组件生成一个唯一data值 -->
</style>
  • scoped样式
    • 作用:让样式在局部生效,防止冲突
    • 写法:<style scoped>

对于所有的 Vue 组件,只要设置了 <style scoped></style>, Vue就会给该组件生成一个唯一data值

八、watch vs computed

both base Reactive Effect class, throught getter and setter update view.

ref 有个 value, 因为 ref + value 构成对象传给 reactive 了

九、脚手架

1. init

npm init/create vue@3

2. 大版本.^次要版本.~小版本

波浪号 (tilde): 比如~1.2.2,表示安装 1.2.x 的最新版本. (安装时不改变大版本号和次要版本号)
插入号 (caret): 比如^1.2.2,表示安装 1.x.x 的最新版本. (安装时不改变大版本号)

注意,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容

latest:安装最新版本

3. 正则

let reg = /1234/g
​i: ignoreCase, 匹配忽视大小写
m: multiline , 多行匹配
g: global , 全局匹配

4. 初始化 vue2 项目 (使用 vite -> vue2.7.x: 支持组合式api)

  • shell
npm init vue@2
npm i element-ui -S
npm i axios --save
npm i vue-axios --save
  • 目录格式
├── node_modules 
├── public
│   ├── favicon.ico: 页签图标
│   └── index.html: 主页面
├── src
│   ├── assets: 存放静态资源
│   │   └── logo.png
│   │── component: 存放组件
│   │   └── HelloWorld.vue
│   │── App.vue: 汇总所有组件
│   │── main.js: 入口文件
├── .gitignore: git版本管制忽略的配置
├── babel.config.js: babel的配置文件
├── package.json: 应用包配置文件 
├── README.md: 应用描述文件
├── package-lock.json:包版本控制文件

十、模拟后端服务器提供json数据

npx json-server --watch data/db.json --port 8000

db.json

{
	"url": [
		{ "...": "...." },
		{ "...": "...." }
	]
}

Endpint

/url  GET/GET_PATH{id}/POST/DELETE
前端VUE【实战】—— mixin混入用法总结
m0_57077948的博客
04-12 505
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)[外链图片转存中…(img-JMXGwf1L-1712904668590)]
为什么 Vue2 this 能够直接获取到 data 和 methods ? 源码揭秘!
u012384510的博客
09-24 1237
1. 前言大家好,我是若川。最近组织了源码共读活动《1个月,200+人,一起读了4周源码》,已经有超50+人提交了笔记,群里已经有超1200人,感兴趣的可以点此链接扫码加我微信ruoch...
vue 混入 相同的对象,钩子的合并规则
月光恋九霄的博客
02-24 832
当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。 比如,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。 const myMixin = { data() { return { message: 'hello', foo: 'abc' } } } const app = Vue.createApp({ mixins: [myMixin], data() { return { message:
VUE中使用Luckysheet遇到“'luckysheet' is not defined问题的终极解决方案
最新发布
gitblog_09748的博客
09-06 383
VUE中使用Luckysheet遇到“'luckysheet' is not defined问题的终极解决方案 Luckysheet-master.zip项目地址:https://gitcode.com/open-source-toolkit/062ad 在Vue项目中集成Luckysheet时,开发者常会遇到“'luckysheet' is not defined”的错误提示。虽然网络上有许...
用Vscode编写的,一直报Data没有被定义!!! [Vue warn]: Error in v-on handler: “ReferenceError: Data is not defined
m0_64498202的博客
01-04 702
vue.js:5129 [Vue warn]: Error in v-on handler: "ReferenceError: Data is not defined"
vue中mixins(混入)的使用
weixin_45488764的博客
09-22 286
混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。      vue中提供了一种混合机制–mixins,用来更高效的实现组件内容的复用。最开始我一度认为这个和组件好像没啥区别,后来发现错了。下面我们来看看mixins和普通情况下引入组件有什么区别? 组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,单本质上两者还是泾渭分明,相对独立。 而
errorThrown:ReferenceError: data is not defined
laughingsister的博客
10-28 3369
ajax请求 error:function(jqXHR,textStatus,errorThrown) { console.log(jqXHR.); console.log(textStatus); console.log(errorThrown); } error函数出现errorThrown:ReferenceError: data is not defined的错误。 经排查 出现这个问题的原因是由于datatype引起的 datatype:“json” 改为 datatype:“text
vue中引入mxGraph的步骤详解
10-16
Vue项目中引入mxGraph,一个强大的图形编辑库,可以创建复杂的交互式图表和图形界面,需要遵循几...这个教程为初学者提供了清晰的指导,确保他们能够顺利在Vue项目中集成mxGraph,为实现富图形界面的功能奠定了基础。
git username is not defined
08-14
- *3* [初学Vue, 关于data内的数据not defined问题](https://blog.csdn.net/howeres/article/details/107122892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_...
Vue的学习笔记
weixin_64747231的博客
09-30 1917
3分钟快速了解--Vue基础入门,带你入门vue的领域
vue源码分析-从new Vue开始
yyzzabc123的博客
10-27 87
的时候就会执行这个方法,并且我们传过去的options可以通过vm.$options访问到,那么。在Vue的原型上挂了一个_init方法,也就是说,我们执行。那我们再去一探究竟,可想而知里面必定有一个Vue函数类。等,这几个方法分别传入了Vue来初始化一些功能。内部原理又是啥呢,而且我们看到他接收到两个部分。那么关于这三个函数是干嘛的?函数执行完前两步之后需要执行的几个函数分别为。,可以看出来这不就是实现了一个继承嘛。那么我们写的一些组件和特性全部放在。中可以发现初始化了一些功能,例如。
Vue中的Mixin混入
gcf10080353的博客
07-14 331
Vue中使用Mixin混入
前端混入(mixins)
m0_70547044的博客
01-08 1537
前端混入(mixins)
Uncaught ReferenceError: data is not defined
weixin_42541725的博客
02-23 4089
使用jQuery jsonp解决跨域问题时报错
VUE复习深入学习10.可复用性 & 组合 mixin!!!!!!
weixin_43152108的博客
06-05 359
混入 基础 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。 选项合并 当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。 比如,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。 同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。 var mixin = { created: functio
Vue is not defined
Harswlgb的博客
04-16 1387
今天的荒谬错误又加一了 今日在写vue的时候出的比较沙雕的错误真的是哭了 如下出现了Vue is not defined的错误 <script type="js/vue.js"></script> <script type="js/axios.js"></script> <script type="text/javascript"> ...
Mixin用法
xu1912715645的博客
01-02 656
vue中Mixin的用法
Strategy VS Mixin(番外篇)——动态混入扩展方法
weixin_33937778的博客
03-04 98
我那时什么也不懂!我应该根据她的行为,而不是根据她的话来判断她。她使我的生活芬芳多彩,我真不该离开她跑出来。我本应该猜出在她那令人爱怜的花招后面所隐藏的温情。花是多么自相矛盾!我当时太年青,还不懂得爱她。 ——圣埃克絮佩里...
data is not defined 的bug
web_Baron的博客
05-10 521
Bug 试例: Bug分析: 这是因为没有加载 data 图片示例: 按上面的加上 data 就可以解决bug了 完毕!!!
写文章

热门文章

  • MySQL 的 WITH 语法 42374
  • 预装 Win 11 系统跳过联网激活 22453
  • Java 的三种 Base64 15533
  • JetBrains注解@NotNull/@Nullable/@Contract 13709
  • 常见 Shell 指令 13449

分类专栏

  • git 8篇
  • Spring 23篇
  • Linux 14篇
  • 工具 19篇
  • DB 11篇
  • maven 6篇
  • docker 6篇
  • zk 3篇
  • netty 1篇
  • Dubbo 1篇

最新评论

  • Properties 类 和 @ConfigurationProperties 注解 ( yaml 时间格式)

    CSDN-Ada助手: Java 与 C++ 有什么区别?它们之间的语言性质有何异同?

  • 不同 Linux 发行版差异

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)使用更多的站内链接;(2)提升标题与正文的相关性;(3)增加除了各种控件外,文章正文的字数。

  • Shell 中扩展命令 (wget, curl, xargs, awk, ln, tail, cat, less, more)

    CSDN-Ada助手: 大数据和数据科学是什么关系呢?

  • [Bash 学习] 后台运行 java -jar 程序

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)使用更多的站内链接。

  • Python 学习

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)使用更多的站内链接。

大家在看

  • mui+vue.js项目笔记 70
  • 基于Java+Jsp+Ssm+Mysql实现的零食商城系统功能设计与实现六
  • 从零开始学习黑客技术,看这一篇就够了
  • 初始JavaEE篇——多线程(2):join的用法、线程安全问题 345
  • 今年读过最绝的一本LLM书!下载量10w+f版!,看完少走一半弯路

最新文章

  • View memory usage in Activity Monitor on Mac
  • 储值免单的数学问题
  • 如何使用 Windows 自带的虚拟机 Hyper-V
2024年21篇
2023年23篇
2022年80篇
2021年65篇
2020年30篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家鹤壁玻璃钢雕塑加工厂宝山玻璃钢雕塑工程上海艺术商场美陈报价深圳酒店玻璃钢花盆驻马店玻璃钢雕塑厂家楼盘玻璃钢雕塑销售价格南通玻璃钢雕塑加工安阳仿木玻璃钢雕塑银川玻璃钢景观雕塑武冈玻璃钢花盆花器园林景观玻璃钢雕塑设计厂家昆明小品系列玻璃钢雕塑定做商场大门口美陈布景公园卡通玻璃钢雕塑公司玻璃钢人物雕塑摆件商场20周年美陈宿州市玻璃钢雕塑商场美陈食物雕塑玻璃钢花盆前景怎样深圳厂家玻璃钢雕塑热线电话大同玻璃钢海豚雕塑中牟便宜的玻璃钢雕塑上海火烈鸟玻璃钢雕塑厂家组合式玻璃钢花盆生产个旧市玻璃钢雕塑设计价格贵州创意玻璃钢雕塑销售厂家泰州新年商场美陈内蒙古商场美陈哪家好玻璃钢室外不锈钢雕塑小品订做江苏玻璃钢人物雕塑价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化