gra*_*lle 4 javascript vue.js vuejs2
我尝试将 Mixins 与 Vue.js 结合使用。但我遇到了几个问题:/
这是我的两个测试模块的当前代码:
ErrorBaseMixin.vue
<script>
import ErrorAlert from './ErrorAlert';
export const ErrorBaseMixin = {
data() {
return {
// Errors management
error_display: true,
error_data: {
level: "warning",
time: 0,
status: 200,
message: ""
}
}
},
methods: {
// ------------------------------------------------------------------------
// Errors management functions
// ------------------------------------------------------------------------
error_function_show_error: function() {
try {
this.$refs.error_component.launch();
}
catch {}
},
callback_error_catched: function(e) {
if(e.message === 'Network Error'){
this.error_data.message = "<strong>There was a network error :</strong> The connection is broken or the server is not started.";
this.error_data.level = "danger";
}
else {
this.error_data.message = "An error occured : " + e.message;
this.error_data.level = "warning";
}
this.error_function_show_error();
},
},
components: {
ErrorAlert
}
}
export default ErrorBaseMixin;
</script>
Run Code Online (Sandbox Code Playgroud)
测试.vue
<template>
<ErrorAlert
:error_display="error_display"
:error="error_data"
ref="error_component"
/>
</div>
</template>
<script lang="js">
import {ErrorBaseMixin} from '../../../parts/ErrorBaseMixin.vue';
export default {
mixins: [ErrorBaseMixin],
name: 'Test_elt',
created() {
this.REST_ADDR = "test/test";
},
data() {
return {
field: {
id: '55',
name: 'test'
}
}
},
methods: {
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
但是当我编译最后一个模块时,浏览器控制台中出现以下错误:
[Vue warn]:属性或方法“error_data”未在实例上定义,但在渲染期间引用。通过初始化该属性,确保该属性是反应性的,无论是在数据选项中还是对于基于类的组件。
[Vue warn]: 未知的自定义元素: - 您是否正确注册了组件?对于递归组件,请确保提供“名称”选项。
但是...一切都运行良好。所以我不明白为什么会出现这些错误
您必须将 ErrorBaseMixin.vue 更改为 ErrorBaseMixin.js:
import ErrorAlert from './ErrorAlert';
const ErrorBaseMixin = {
data() {
return {
// Errors management
error_display: true,
error_data: {
level: "warning",
time: 0,
status: 200,
message: ""
}
}
},
methods: {
// ------------------------------------------------------------------------
// Errors management functions
// ------------------------------------------------------------------------
error_function_show_error: function() {
try {
this.$refs.error_component.launch();
}
catch {}
},
callback_error_catched: function(e) {
if(e.message === 'Network Error'){
this.error_data.message = "<strong>There was a network error :</strong> The connection is broken or the server is not started.";
this.error_data.level = "danger";
}
else {
this.error_data.message = "An error occured : " + e.message;
this.error_data.level = "warning";
}
this.error_function_show_error();
},
},
components: {
ErrorAlert
}
}
export default ErrorBaseMixin;
Run Code Online (Sandbox Code Playgroud)
然后导入您的组件:
import {ErrorBaseMixin} from '../../../parts/ErrorBaseMixin.js';
export default {
mixins: [ErrorBaseMixin],
...
Run Code Online (Sandbox Code Playgroud)
注意:注意如何导入和导出,我已经改变了方式。
| 归档时间: |
|
| 查看次数: |
9675 次 |
| 最近记录: |