asp.net-mvc - Vue.Js - 如何从 MVC 视图模型将数据加载到 Vue 实例中?
问题描述
我是 Vue Js 的新手,想用它来过滤一些下拉列表等。考虑到我已经拥有视图模型中下拉列表的所有数据,我想将该数据传递给 Vue 实例,其中然后我可以使用 Vue 过滤下拉列表。
我已经尝试将数据放入一个简单的 div 中,因此我可以将其选择到 Vue 实例中,但它不起作用。一定有更好的方法。我是否必须单独调用服务器才能填充 Vue 实例?
代码片段只有一个简单的数组,我似乎也无法加载。
最终想退出这个视图模型
@model MyApp.CatalogViewModels.ViewModel
脚本在这里...
new Vue({
el: "#app",
data: {
categories: ["one", "two"]
}
,
methods: {
loadCategories() {
$('#modelData.items').forEach(item => this.categories.push(item))
}
},
created() {
this.loadCategories()
}
})
标记...
<div id="app">
<div id="modelData" items=['apple','orange','pear']></div>
<div>
<div>
<ul>
<li v-for="item in categories">
{{ item }}
</li>
</ul>
</div>
解决方案
只是要先解决这个问题:
这样做的“最佳实践”方式是从后端服务器/API 检索客户端的数据,而不是通过模板引擎将数据添加到属性中。Vue
通过这样做,您基本上违背了目的。
为什么要停止将该数据添加到items
属性?为什么不通过 Razor 将其添加到列表中?- 这就是为什么使用模板引擎Vue
并没有真正意义..
此外,使用jQuery
withVue
是多余且不需要的。如果您的设计配置正确,则Vue
可以替换。jQuery
有时它们不能很好地结合在一起,这取决于你在做什么或你正在使用的框架,你是否使用 Webpack 等等。虽然,大多数时候它应该没问题(但同样,完全不必要)。
说了这么多:
您可以执行类似的操作来从该items
属性中获取数据。我在回答中提供了 2 个示例,其中一个比另一个更容易...请记住,当您尝试抓取时,此数据采用文字字符串格式它来自 DOM。
编辑:更改了一堆replace
使用regex
以清理它
new Vue({
el: "#app",
data: {
categories: ["one", "two"],
categories2: ["three", "four"]
},
methods: {
loadCategories() {
//$('#modelData.items').forEach(item => this.categories.push(item))
document
.getElementById("modelData")
.getAttribute("items")
.replace(/[\[\]']+/g, "")
.split(",")
.forEach(x => {
this.categories.push(x);
});
},
loadCategories2() {
document
.getElementById("modelData2")
.getAttribute("items")
.split(",")
.forEach(y => {
this.categories2.push(y);
});
}
},
created() {
this.loadCategories();
this.loadCategories2();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
<div id="app">
<div id="modelData" items=['apple','orange','pear']></div>
<ul>
<li v-for="item in categories">
{{ item }}
</li>
</ul>
<br/>
<hr/>
<br/>
<small>Easier this way</small>
<div id="modelData2" items="apple, orange, pear"></div>
<ul>
<li v-for="item in categories2">
{{ item }}
</li>
</ul>
</div>
推荐阅读
- node.js - 在 NodeJS 中对 Microsoft Graph 的范围应用程序请求
- mysql - 为什么数据库限制行/值大小?
- eclipse - 如何在 Eclipse 插件中使用 tinylog
- amazon-web-services - 将一组特定文件从 Amazon S3 同步到 Dropbox 或 Amazon Drive
- android - 我如何检索 Firebase 下载 URL
- symfony - 数据库创建 Doctrine2
- angular - 动态表用新数据替换数组元素
- python-3.x - 如何解决“数据集”对象没有“编码”属性?
- amazon-web-services - 我可以将预签名的 URL 传递到另一个 s3 存储桶以用于将内容下载到其中吗?
- python - 如何在 Python 3 中打印出编号的 IP 地址