gpt4 book ai didi

vue.js - 如何使用方法扩展 vuejs?

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:52 24 4
gpt4 key购买 nike

我目前正在努力思考如何扩展 vuejs 实例。具体来说,我想分离一个实例,以便我可以重用实例的基础(元素和数据)。我目前有不同的(laravel/blade) View 来添加和编辑项目(域),我想在这两者之间共享一个 vuejs 实例,但我不想在两个地方有相同的代码(基础)。

基本上,我要搜索的是以下内容:

<script type="text/javascript">
var vue = new Vue({

el: '#domain',

data: {
form: {
'name' : '',
'git_repo' : '',
'auto_deploy' : '',
'create_db' : ''
},
ajaxResponse : ''
}

});
</script>

<script type="text/javascript">
Vue.extend('domain_methods', {

methods: {

postDomain: function () {
this.$http.post('{{ route('domain.store') }}', function (data, status, request) {
this.$set('ajaxResponse', data);
}, {
data: this.form
} ).error(function (data, status, request) {
this.$set('ajaxResponse', data);
});
}

}

});
</script>

但这显然行不通。我只想在 #domain 元素中使用 postDomain() 方法,而无需在实例的初始创建中编写该方法。

提前致谢!

最佳答案

小心——您将 .extend() 的用法与 .component() 的用法混为一谈。他们做非常不同的事情。文档的这一部分包含有关差异的更多信息:

http://vuejs.org/guide/components.html

在这种特殊情况下,只需通过 .extend() 声明您的顶级 Vue 类,然后通过将其用作构造函数来实例化它的子类。这为您提供了类似继承的行为。

例如:

<script type="text/javascript">
var MainVue = Vue.extend({
data: function () {
return {
form: {
'name' : '',
'git_repo' : '',
'auto_deploy' : '',
'create_db' : ''
},
ajaxResponse : ''
};
}
});
</script>

<script type="text/javascript">
var secondary_vue = new MainVue({
el: '#domain',
methods: {
postDomain: function () {
this.$http.post('{{ route('domain.store') }}', function (data, status, request) {
this.$set('ajaxResponse', data);
}, {
data: this.form
} ).error(function (data, status, request) {
this.$set('ajaxResponse', data);
});
}
}
});
</script>

关于vue.js - 如何使用方法扩展 vuejs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31709462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com