- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
V-Model 从 router.params 绑定(bind)和加载数据,可选默认不工作 Vue.js 2
我有 4 个选择和 1 个文本输入
在我的 data() 方法中,我返回一个数组,其中包含选择选项元素的默认值。
我想要的是当组件加载时从 url (router.params) 获取值,然后从选择中选择正确的值,并将文本输入(通过路由器参数传递)显示回文本框 [搜索框]
我尝试了双向绑定(bind)、单向绑定(bind)、使用 setTimeout 函数的 jquery 更新,但仍然没有积极的结果
期待您的回复和建议,谢谢。
路线
import Vue from 'vue'
import Router from 'vue-router'
import HomeScreen from '@/components/HomeScreen'
import MangaSearch from '@/components/MangaSearch'
import MangaView from '@/components/MangaView'
import MangaHeaderMenuComponent from '@/components/reusable/MainMenuComponent'
import MangaSearchComponent from '@/components/reusable/MangaSearchComponent'
import MangaPopularComponent from '@/components/reusable/MangaPopularComponent'
import MangaResultsComponent from '@/components/reusable/MangaResultsComponent'
Vue.component('manga-header-menu', MangaHeaderMenuComponent)
Vue.component('manga-search', MangaSearchComponent)
Vue.component('manga-popular', MangaPopularComponent)
Vue.component('manga-results', MangaResultsComponent)
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HomeScreen',
component: HomeScreen
},
{
path: '/search',
name: 'MangaSearch',
component: MangaSearch
},
{
path: '/manga/view',
name: 'MangaView',
component: MangaView
},
]
})
代码如下:
<template>
<div class="search-container">
<div class="search-form-container">
<input type="text" v-on:keypress.enter="search" id="q" col="10" placeholder="Search Here" />
</div>
<div class="search-filter-container">
<div><select id="search-genre" class="search-filter-field">
<option :disabled="true" :selected="true">Genre</option>
<option v-for="genre in genres" v-bind:value="genre"> {{ genre }}</option>
</select></div>
<div><select id="search-date" class="search-filter-field">
<option :disabled="true" :selected="true">Date</option>
<option v-for="date in dates" v-bind:value="date"> {{ date }}</option>
</select></div>
<div><select id="search-rating" class="search-filter-field">
<option :disabled="true" :selected="true">Rating</option>
<option v-for="rating in ratings" v-bind:value="rating"> {{ rating }}</option>
</select></div>
<div><select id="search-language" class="search-filter-field">
<option :disabled="true" :selected="true">Language</option>
<option v-for="language in languages" v-bind:value="language"> {{ language }}</option>
</select></div>
</div>
</div>
</template>
<script>
export default {
data (){
return {
/* Filter Options */
/* - Genre List*/
genres: [ 'All', 'Action', '' ],
/* - Date/Time Frame List*/
dates: [ 'All', 'Last Month', 'Last Year'],
/* - Ratings List*/
ratings: [ 'All','0', '1', '2', '3', '4', '5' ],
/* - Language List*/
languages: [ 'All', 'Afrikaans','Albanian','Amharic','Arabic','Bahasa','Bengali','Bosnian','Bravanese','Bulgarian','Catalan','Chinese (Simplified)','Chinese (Trad–HK)','Chinese (Traditional)','Croatian','Czech','Danish','Dutch','Estonian','Euro English','Farsi','Finnish','French (Belgian)','French (Canadian)','French (Euro)','German','Greek','Gujarati','Haitian Creole','Hebrew','Hindi','Hmong','Hungarian','Icelandic','Italian','Japanese','Javanese','Kashmiri','Kazakh','Khmer','Korean','Laotian','Latvian','Lithuanian','Macedonian','Malay','Malayalam','Mandinka','Marathi','Norwegian','Oromo','Polish','Portuguese','Punjabi','Romanian','Russian','Serbian','Sinhalese','Slovak','Somali','Spanish (Iberian)','Spanish (Latin)','Sudanese Arabic','Swedish','Tagalog','Tamil','Telegu','Thai','Turkish','Ukrainian','Urdu','Vietnamese' ],
/* Local Storage For Filter Values */
name: (this.$route.params.name ? this.$route.params.name : ''),
genre: (this.$route.params.genre ? this.$route.params.genre : 'Genre'),
date: (this.$route.params.date ? this.$route.params.date : 'Date'),
rating: (this.$route.params.rating ? this.$route.params.rating : 'Rating'),
language: (this.$route.params.language ? this.$route.params.language : 'Language')
};
return data;
},
methods: {
search (){
this.$router.push({
path: 'search',
query: {
name: $('#q').val(),
genre: $('#search-genre').val(),
date: $('#search-date').val(),
rating: $('#search-rating').val(),
language: $('#search-language').val()
}
});
}
},
}
</script>
最佳答案
这段代码有很多问题:
params
,但使用 query
重定向(它有效,但如果您更改路由 params)首先,将 filter:{}
添加到 data
(它将存储当前的过滤器字段),让我们通过路由更改来更新它:
export default {
data() {
return {
// filter options omitted for better readability
// ...
filter: {},
};
},
watch: {
'$route'(to) {
if (to.name === 'MangaSearch') {
this.filter = Object.assign({}, to.query);
}
},
},
created() {
this.filter = Object.assign({}, this.$route.query);
},
methods: {
search() {
this.$router.push({
path: '/search',
query: this.filter
});
}
},
}
接下来,让我们使用 v-model
将表单字段与此过滤器链接起来:
<div class="search-form-container">
<input type="text" v-model="filter.name" @keypress.enter="search" id="q" col="10" placeholder="Search Here" />
</div>
<div class="search-filter-container">
<div><select v-model="filter.genre" id="search-genre" class="search-filter-field">
<option disabled>Genre</option>
<option v-for="genre in genres" :value="genre">{{ genre }}</option>
</select></div>
<div><select v-model="filter.date" id="search-date" class="search-filter-field">
<option disabled>Date</option>
<option v-for="date in dates" :value="date">{{ date }}</option>
</select></div>
<div><select v-model="filter.rating" id="search-rating" class="search-filter-field">
<option disabled>Rating</option>
<option v-for="rating in ratings" :value="rating">{{ rating }}</option>
</select></div>
<div><select v-model="filter.language" id="search-language" class="search-filter-field">
<option disabled>Language</option>
<option v-for="language in languages" :value="language">{{ language }}</option>
</select></div>
</div>
就是这样。您甚至不再需要 jQuery。
关于javascript - Vue.js 2 + Webpack,V-Model 绑定(bind)并从 router.params 加载数据,可选默认不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176579/
我对 mongoosejs 中模型的使用感到有些困惑。 可以通过这些方式使用 mongoose 创建模型 使用 Mongoose var mongoose = require('mongoose');
我正在看 from django.db import models class Publisher(models.Model): name = models.CharField(max_len
我有自己的 html 帮助器扩展,我用这种方式 model.Reason_ID, Register.PurchaseReason) %> 这样声明的。 public static MvcHtmlS
假设模型原本是存储在CPU上的,然后我想把它移到GPU0上,那么我可以这样做: device = torch.device('cuda:0') model = model.to(device) # o
我过去读过一些关于模型的 MVC 建议,指出不应为域和 View 重用相同的模型对象;但我找不到任何人愿意讨论为什么这很糟糕。 我认为创建两个单独的模型 - 一个用于域,一个用于 View - 然后在
我正在使用pytorch构建一个像VGG16这样的简单模型,并且我已经重载了函数forward在我的模型中。 我发现每个人都倾向于使用 model(input)得到输出而不是 model.forwar
tf.keras API 中的 models 是否多余?对于某些情况,即使不使用 models,代码也能正常运行。 keras.models.sequential 和 keras.sequential
当我尝试使用 docker 镜像运行 docker 容器时遇到问题:tensorflow/serving。 我运行命令: docker run --name=tf_serving -it tensor
我有一个模型,我用管道注册了它: register_step = PythonScriptStep(name = "Register Model",
如果 View 需要访问模型中的数据,您是否认为 Controller 应: a)将模型传递给 View b)将模型的数据传递给 View c)都不;这不应该是 Controller 所关心的。让 V
我正在寻找一个可以在模型中定义的字段,该字段本质上是一个列表,因为它将用于存储多个字符串值。显然CharField不能使用。 最佳答案 您正在描述一种多对一的关系。这应该通过一个额外的 Model 进
我最近了解了 Django 中的模型继承。我使用很棒的包 django-model-utils 取得了巨大的成功。我继承自 TimeStampedModel 和 SoftDeletableModel。
我正在使用基于 resnet50 的双输出模型进行项目。一个输出用于回归任务,第二个输出用于分类任务。 我的主要问题是关于模型评估。在训练期间,我在验证集的两个输出上都取得了不错的结果: - 综合损失
我是keras的新手。现在,我将使用我使用 model.fit_generator 训练的模型来预测测试图像组。我可以使用 model.predict 吗?不确定如何使用model.predict_g
在 MVC 应用程序中,我加入了多个表并将其从 Controller 返回到 View,如下所示: | EmployeeID | ControlID | DoorAddress | DoorID |
我在使用 sails-cassandra 连接系统的 Sails 中有一个 Data 模型。数据。 Data.count({...}).exec() 返回 1,但 Data.find({...}).e
我正在使用 PrimeFaces dataTable 开发一个 jsf 页面来显示用户列表。用户存储在 Model.User 类的对象中。
我正在关注https://www.tensorflow.org/tutorials/keras/basic_classification解决 Kaggle 挑战。 但是,我不明白应该将什么样的数据输入
我是这个领域的新手。那么,你们能帮忙如何为 CNN 创建 .config 文件吗? 传递有关如何执行此操作的文档或教程将对我有很大帮助。谢谢大家。 最佳答案 这个问题对我来说没有多大意义,因为 .co
我是“物理系统建模”主题的新手。我阅读了一些基础文献,并在 Modelica 和 Simulink/Simscape 中做了一些教程。我想问你,如果我对以下内容理解正确: 符号操作是将微分代数方程组(
我是一名优秀的程序员,十分优秀!