asp.net-mvc - 无法安装组件:未定义模板或渲染函数。“vue.js”与 asp.net mvc
问题描述
我有一个小教程项目,我写它是为了学习将 vue.js 与 mvc 集成。
我有 1 个组件,我在 vue 实例中使用它,当我将这些组件的 html 代码写入 js 文件(每个 vue 组件有 2 个文件 .cshtml 和 .js)时,一切正常
,工作场景是
test1.cshtml。 js文件是
import Vue from "vue";
document.addEventListener('DOMContentLoaded', function (event) {
Vue.component('test1',{
mounted: function () { },
data: function () {
return {
};
},
template: `
<div>
<ul>
<li>Yaman</li>
</ul>
</div>
`
});
});
和 vue 实例是
contact.cshtml.js 文件是
import Vue from "vue";
import test1 from "../Home/test1.cshtml.js"; Vue.component('test1', test1);
document.addEventListener('DOMContentLoaded', function (event) {
let view = new Vue({
el: document.getElementById('view'),
mounted: function () { },
data: {
message: "One-way binding msg",
twoWayBindingMessage: "Type here ..."
}
}); });
和contact.cshtml文件是
@{
ViewData["Title"] = "Hello World - Page";
}
<section>
<div id="view">
<h4>@ViewData["Title"]</h4>
<h3>@ViewData["Message"]</h3>
<div>
<span>One way binding message:{{message}}</span>
<br /><hr />
<span>2-way binding msg: {{twoWayBindingMessage}}</span><br />
<br />
<input type="text" v-model="twoWayBindingMessage">
<test1></test1>
</div>
</div>
</section>
<script src="~/js/Contact.bundle.js"></script>
但是当我尝试将 test1 模板写入单独的文件“cshtml 文件”作为“联系人文件”时,我的问题就开始了
不工作的场景是
test1.cshtml 文件变成
import Vue from "vue";
document.addEventListener('DOMContentLoaded', function (event) {
Vue.component('test1',{
mounted: function () { },
data: function () {
return {
};
}
});
});
和 test1.cshtml 是
<section>
<div id="testnew">
<ul>
<li>Yaman</li>
</ul>
</div>
</section>
<script src="~/js/test1.bundle.js"></script>
在这种情况下,我收到此错误
Contact.bundle.js:6 [Vue 警告]:无法挂载组件:未定义模板或渲染函数。
在发现
--->
任何人都可以帮助我吗?
解决方案
最后我找到了解决方案:) 我们应该
1- 在安装 html 加载器后将此部分添加到 webback.config
{
test: /\.(html|cshtml)$/,
loader: 'html-loader'
},
2-在.js文件中导入cshtml文件
import test1Html from "../Home/test1.cshtml";
3-在js文件中使用上述导入作为模板
template: test1Html,
vue组件js文件应该如下
import Vue from "vue";
import test1Html from "../Home/test1.cshtml";
document.addEventListener('DOMContentLoaded', function (event) {
Vue.component('test1',{
mounted: function () {
console.log('mounted test1');
},
template: test1Html,
data: function () {
return {
message: "try test1 binding",
list: ['one','two','three','four','five']
};
}
});
});
多谢。
推荐阅读
- python - python套接字连接不返回任何信息
- vue.js - 我在哪里可以检查 Vue.js 生成的渲染函数?
- html - 如何将多页网站表中的所有数据提取到 Power BI 中?
- batch-file - 如何使用 .bat 文件在 google chrome 上单击鼠标左键
- sqlite - 在大表上执行 .import 时,SQLite 非常慢
- bash - 排序输出,需要在字符串之间插入文本
- c++ - 在链表中添加列表项或节点
- java - 强制门户如何在后台工作,我如何用 Java 编写一个以在 Windows 热点上使用?
- c# - 如何在 .NET Http Trigger Azure 函数中包含 MCR 和引用 MATLAB 程序集?
- javascript - .toLocaleDateString() 是否会根据位置自动格式化日期?