Vuejs - 获取动态生成的输入字段及其值并在更改时更改其颜色
Vuejs - Get dynamically generated input field and its value and change its color on change
在 Vue.js 中,我创建了一个带有 editable 字段的 table。
table 字段是动态生成的,例如:
<b-table :items="filtered" :fields="columns">
<template v-for="field in editableFields" v-slot:[tableCell(field.key)]="{ item }">
<b-form-input v-model="item[field.key]" v-bind:key="field.key""/>
</template>
</b-table>
v槽的方法是这样的:
tableCell(fieldkey) {
return `cell(${fieldkey})`;
}
那部分工作得很好 :-)
我的问题是我想为更改后的输入字段值着色并跟踪它的值,因此如果它的值变回默认值,则颜色默认变回原始颜色。喜欢:
|_你好_|_默认_|_输入_|
|____|____|____|
|_你好_|_颜色_|_输入_|
|______|_______|______|
所以值 "default" 没有颜色,当更改为 "color" 时,输入字段应该是红色的。
改回 "default" 时,应重置颜色。
“item[field.key]
”代表每个 og table 单元格值:"hello"、"default"、"input"、"color" 等.
我已经尝试研究 "v-bind:class {active: active}" 和 v-on:change(item[field.key]) 和 Vues Watch,但我找不到方法..
谢谢你的问候
我做了一个快速演示,展示了当值不同时如何应用 css class。
希望对您有所帮助。
.changed {
background-color: orange;
color: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="text" :class="{ changed : oldValue !== newValue }" v-model="newValue" />
</div>
<script>
new Vue({
el: '#app',
data: function() {
return {
oldValue: "Hello",
newValue: "Hello"
}
}
})
</script>
在 Vue.js 中,我创建了一个带有 editable 字段的 table。 table 字段是动态生成的,例如:
<b-table :items="filtered" :fields="columns">
<template v-for="field in editableFields" v-slot:[tableCell(field.key)]="{ item }">
<b-form-input v-model="item[field.key]" v-bind:key="field.key""/>
</template>
</b-table>
v槽的方法是这样的:
tableCell(fieldkey) {
return `cell(${fieldkey})`;
}
那部分工作得很好 :-)
我的问题是我想为更改后的输入字段值着色并跟踪它的值,因此如果它的值变回默认值,则颜色默认变回原始颜色。喜欢:
|_你好_|_默认_|_输入_|
|____|____|____|
|_你好_|_颜色_|_输入_|
|______|_______|______|
所以值 "default" 没有颜色,当更改为 "color" 时,输入字段应该是红色的。 改回 "default" 时,应重置颜色。
“item[field.key]
”代表每个 og table 单元格值:"hello"、"default"、"input"、"color" 等.
我已经尝试研究 "v-bind:class {active: active}" 和 v-on:change(item[field.key]) 和 Vues Watch,但我找不到方法..
谢谢你的问候
我做了一个快速演示,展示了当值不同时如何应用 css class。
希望对您有所帮助。
.changed {
background-color: orange;
color: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="text" :class="{ changed : oldValue !== newValue }" v-model="newValue" />
</div>
<script>
new Vue({
el: '#app',
data: function() {
return {
oldValue: "Hello",
newValue: "Hello"
}
}
})
</script>