νμ¬ v-model μ§μλ¬Έμ λ°μΈλ© ννμμ λν 콧μμΌ μ ν λ°μΈλ©μ μ§μνμ§ μμ§λ§ μ΄ κΈ°λ₯μ μμ λΉλμ κ°μ ꡬνμ λ§λλ λ° λ§€μ° μ μ©ν©λλ€.
μ΄λ€ μ μ λμμ΄ λλμ§ μλ₯Ό λ€μ΄μ£Όμ€ μ μμ΅λκΉ?
DESCRIBE TABLE λ¬Έμμ λ°μ΄ν°λ₯Ό μμ νκ³ ν΄λΉ λ°μ΄ν°μμ ν νΈμ§κΈ° μμμ μμ±νλ phpmyadminμ 볡μ λ³Έμ λΉλνλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€. μ΄ κ²½μ° λ°μΈλ© ννμμ λ³Έμ§μ μΌλ‘ λμ μ λλ€. SQL DESCRIBE TABLEμ μ€νν νμλ§ νλ μ΄λ¦μ μ μ μκΈ° λλ¬Έμ λλ€.
+1, λλ μ΄κ²μ μ°Ύκ³ μμ΅λλ€
+1, μ΄κ²μ λ³Ό μ μκΈ°λ₯Ό λ°λλλ€.
λλ μ΄κ²μ΄ νμ¬ κ΅¬λ¬Έμ΄ λ¬μ±ν μ μλ κ²μ κ°λ₯νκ² νλ κ²μ μ¬μ ν μμ ν μ΄ν΄νμ§ λͺ»ν©λλ€. μΌλΆ μ½λ μν?
μμμ μ€λͺ ν phpmyadmin 볡μ μ κ΄λ ¨λ μΌλΆ μμ¬ μ½λ:
<script>
modue.exports = {
data: function(){
//returns table structure pulled from the backend somehow
return {fields: [
{name: "id", type: "integer"},
{name: "name", type: "varchar"},
{name: "gender", type: "varchar"}
],
// this was initialised based on the structure above, does not matter how.
form: {id: null, name: null, gender: null});
},
methods: {
getBindingExpr: function(field){ /* blah-blah */ }
}
}
</script>
<template>
<div v-repeat="field: fields">
<!-- Here we need to display an editor bound to the field -->
<input type="text" v-model="form.{{field.name}}">
<!-- Or, we can call a function that calculates the binding expression --
<input type="text" v-model="{{getBindingExpr(field)}}">
</div>
</template>
v-model="form[field.name]"
μ΄λ―Έ ν μ μμ΅λλ€.
μ°λ¦¬λ ν μ μμ΅λκΉ? μ°μ !
evan todo-ish μμ λ₯Ό 보μ¬μ£Όλ js λ°μ΄μ¬λ¦°μ μ¬λ € μ€ μ μμ΅λκΉ?
@yyx990803 , νλ₯νμ§λ§ λμ μ¬μ©μ ν μλ₯Ό 보μ¬μ£Όλ μμΌ λΏμ λλ€. λ Όλ¦¬λ μΌμ’ μ λΉμ¦λμ€ μμ© νλ‘κ·Έλ¨μμ λ 볡μ‘ν μ μμ΅λλ€.
λΆλͺ ν λλ ββμ§μμ΄ ννμ λ΄μμ 보κ°μ νμ©νλ μμ΄λμ΄μ λ°λν©λλ€. νμ¬ μ½§μμΌμ νκ°λ κ²°κ³Όκ° λ¬Έμμ΄λ‘ μμλκ³ λ¬Έμμ΄λ‘ μ¬μ©λ¨μ μλ―Έν©λλ€(DOMμ μ½μ νκ±°λ ID μ‘°νλ₯Ό μνν¨). 콧μμΌμ νκ°ν μ μλ ννμμΌλ‘ νκ°νλ©΄ λ κ°μ μΆμν κ³μΈ΅μ΄ λ§λ€μ΄μ§κ³ κ²°κ΅ ν νλ¦Ώμ λ§€μ° νΌλμ€λ½κ² λ§λ€ μ μμ΅λλ€.
ννμμ νκ°νκΈ° μ μ λ¬Έμμ΄μ 보κ°νλ κΈ°λ₯μ μΆκ°νλ κ²μ΄ λ§€μ° κ°μΉ μλ€κ³ μκ°ν©λλ€.
data[pathString]
λ©μλλ μ€μ²© μμ€μ΄ 1μΈ κ°μ²΄μ λν΄ μ μλνμ§λ§ 2 μ΄μμ κ²½μ° λμ μΌλ‘ λ°μΈλ©νλ λ°©λ²μ μ°Ύμ§ λͺ»νμ΅λλ€.
콧μμΌλ³΄λ€ λ λͺ ννλλ‘ λ°μΈλ©μ μμ μλ₯Ό μΆκ°ν μ μμ΅λλ€.
μμ
let myData = {}
let varPath = 'myData.path.to["my"].obj'
let modelPath = 'myData.path.to["my"].model'
<component-name :myparam.interpolate='varPath'></component-name>
<input v-model.interpolate='modelPath'>
λλ μ λ¬ν μ μλ getter/setter ν¨μμΌ μ μμ΅λλ€.
λ©΄μ± μ‘°ν: λλ 2.0 μ¬μμ μ½μ§ μμμΌλ―λ‘ μ¬κΈ°μμ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ μ μμ΅λλ€.
@bhoriuchi μ κ³μ° μμ±μ΄ μμ΅λκΉ?
computed: {
varPath: function() {
return this.myData.path.to['my'].obj;
},
},
<component-name :myparam="varPath"></component-name>
κ·Έλ¦¬κ³ v-model
κ²½μ° setterμ ν¨κ» κ³μ°λ μμ±μ μ¬μ©ν μ μμ΅λλ€.
@simplesmiler μλ°©ν₯ λ°μΈλ©μμ κ³μ°λ μμ±μ μλνμ§ μμμ΅λλ€. ν κ³ λ§μ.
μ λ°μ΄νΈ
@simplesmiler - κ³μ°λ μμ±μ μ¬μ©ν λ λ°μνλ λ¬Έμ λ κ³μ°λ μμ±μ μΈμλ₯Ό μ λ¬ν λ°©λ²μ΄ μλ€λ κ²μ
λλ€. getter λ΄λΆμ this
λλ value
μ get(value)
λ λ€ κ΅¬μ± μμλ₯Ό κ°λ¦¬ν΅λλ€.
λ΄ μ¬μ© μ¬λ‘μ λν λͺ κ°μ§ λ°°κ²½.
json κ°μ²΄λ₯Ό μ¬μ©νμ¬ μμμ μμ±νλ μμ μμ±κΈ°λ₯Ό λ§λ€κ³ μμ΅λλ€. κ΅¬μ± κ°μ²΄λ κ°μ²΄(ν/μμ)μ 2μ°¨μ λ°°μ΄μ λλ€. κ° μμ κ΅¬μ± κ°μ²΄μλ μ€μ ν΄μΌ νλ νλμ λν κ²½λ‘ λ¬Έμμ΄μ΄ μλ λͺ¨λΈ νλκ° μμ΅λλ€. μ΄μ λν΄ κ³μ°λ μμ±μ μ¬μ©νλ €λ©΄ κ΅¬μ± κ°μ²΄μμ λͺ¨λΈ κ²½λ‘λ₯Ό μ‘°ννκΈ° μν΄ κ΅¬μ± μμ λ°μΈλ©μ μ¬μ©νμ¬ κ΅¬μ± μμμμ μ΄λ€ ν/μμ μμΈμ κ²°μ ν μ μμ΄μΌ ν©λλ€.
νμ¬ formData
λΌλ 미리 μ΄κΈ°νλ 2μ°¨μ λ°°μ΄μ μ¬μ©νμ¬ μ΄ μμ
μ μννκ³ μμ΅λλ€. μ΄ λ°°μ΄μ κ° μμ λͺ¨λΈμ v-model="formData[rowIndex][formIndex]"
λ°μΈλ©νκ³ ν΄λΉ κ°μ²΄μμ λ³κ²½ μ¬νμ νμΈνκ³ μμ λ°μ΄ν° κ°μ²΄λ₯Ό μ
λ°μ΄νΈνμ§λ§ μ λ λμ νλ μΆκ°λ₯Ό μν΄ λ°°μ΄μ 미리 μ΄κΈ°νν΄μΌ νκΈ° λλ¬Έμ μ΄ μ κ·Ό λ°©μμ μ«μ΄ν©λλ€.
λ€μκ³Ό κ°μ κ°μ²΄λ₯Ό μ€μ ν΄μΌ νλ λ€λ₯Έ κ΅¬μ± μμμμ μ΄ μμ μμ±κΈ° κ΅¬μ± μμλ₯Ό μ¬μ©νκ³ μκΈ° λλ¬Έμ 2λ¨κ³μ μ€μ²©μ΄ νμν©λλ€.
data: {
templates: {
operatingSystems: {
<someuuid1>: [ <osid1>, <osid2> ],
<someuuid2>: [ <osid5>, <osid10>, <osid22> ]
}
}
}
λ΄ κ²½λ‘ λ¬Έμμ΄μ λ€μκ³Ό κ°μ΅λλ€.
templates.operatingSystems[<dynamic uuid>]
μ λ°μ΄νΈ 2
λ€μ°¨μ λ°°μ΄μ μ¬μ©νλ κ²μμ ν€ μ΄λ¦μ΄ μλ μΌλ° κ°μ²΄λ‘ λ³κ²½νμ΅λλ€.
"<rowIndex>_<formIndex>"
λ°μ΄ν°λ₯Ό λΆλͺ¨μ λκΈ°νλ μνλ‘ μ μ§νκΈ° μν΄ λ₯ μμΉλ₯Ό μ¬μ©νμ΅λλ€. λλ μ¬μ ν interoplated λ°μΈλκ° μ μ΅ν κ²μ΄λΌκ³ μκ°ν©λλ€.
+1
μ μκ²λ v-model="$data[field.name]"
μ΄ νΈλ¦μ μνν©λλ€!
@victorwpbastos μ΄κ²μ field.nameμ ν€λ‘ μ¬μ©νκΈ° λλ¬Έμ κΉμ΄ μ€μ²©λ κ°μ²΄λ₯Ό μ€μ νλ λ° μλνμ§ μμ΅λλ€.
μλ₯Ό λ€μ΄ λ€μ λ°μ΄ν°μ νλ λ¬Έμμ΄μ΄ μλ κ²½μ°
$data = {
'animal': {
'dog': {
'husky': 1
}
}
}
field.name = 'animal.dog.husky'
κ·Έλ¦¬κ³ λΉμ μ μ¬μ©
v-model="$data[field.name]"
μμμ κ° 2λ₯Ό μ λ ₯νλ©΄ λ°μ΄ν°κ° λ€μκ³Ό κ°μ΄ νμλ©λλ€.
$data = {
'animal': {
'dog': {
'husky': 1
}
},
'animal.dog.husky': 2
}
보κ°λ λ°μΈλκ° μ μ©ν μ΄μ λ λΆλͺ¨ κ²½λ‘(μ: 'animal.dog')λ₯Ό μ§μλ¬Έμ "νλ μ½λ©"ν μ μλ λμ μ€μ²© μ λ ₯μ ꡬμΆνλ κ²½μ°μ λλ€.
λλ μ΄κ²μ λ€μ λ°©λ¬Ένμ¬ λ κ°λ¨ν ν΄κ²°μ± μ μ°Ύμμ΅λλ€. μ¬μ©μ μ μ κ°μ²΄λ₯Ό λ§λ€κ³ λͺ¨λΈ κ²½λ‘ λ¬Έμμ΄μ μ¬μ©νμ¬ μμ±λ κ°μ²΄μ getter/setterλ₯Ό μΆκ°ν μ μμ΅λλ€. λ€μμ κ°λ¨ν μμ λλ€.
μ λ ₯ λͺ©λ‘
<template lang="jade">
div
div(v-for="form in config.forms")
input(v-model="formData[form.model]")
</template>
<script type="text/babel">
import Vue from 'vue'
import _ from 'lodash'
export default {
props: ['value', 'config'],
computed: {},
methods: {
vueSet (obj, path, val) {
let value = obj
let fields = _.isArray(path) ? path : _.toPath(path)
for (let f in fields) {
let idx = Number(f)
let p = fields[idx]
if (idx === fields.length - 1) Vue.set(value, p, val)
else if (!value[p]) Vue.set(value, p, _.isNumber(p) ? [] : {})
value = value[p]
}
}
},
data () {
return {
formData: {}
}
},
created () {
_.forEach(this.config.forms, (form) => {
Object.defineProperty(this.formData, form.model, {
get: () => _.get(this.value, form.model),
set: (v) => this.vueSet(this.value, form.model, v)
})
})
}
}
</script>
μ¬μ©
<template lang="jade">
div
input-list(v-model="formData", :config='formConfig')
</template>
<script type="text/babel">
import InputList from './InputList'
export default {
components: {
InputList
},
data () {
return {
formData: {
name: 'Jon',
loc: {
id: 1
}
},
formConfig: {
forms: [
{ type: 'input', model: 'loc.id' },
{ type: 'input', model: 'loc["name"]' }
]
}
}
}
}
</script>
μ΄ λ°©λ²μ μ¬μ©νλ κ²½μ° λμ μΌλ‘ μμ±λ κ° λ°μ λ°μ΄ν°μ λν΄ κ°μμλ₯Ό μ€μ ν μ μλ λ°©λ²μ 무μμ λκΉ?
@luqmanrom μ λ vue watcherμ λ΄λΆ μλμ μ΅μνμ§ μμ§λ§ vue.setμΌλ‘ μμ±λ λͺ¨λ κ²μ λ³Ό μ μμΌλ―λ‘ λμ μνμ κ΄μ°°νκ³ λ³κ²½ μ¬νμ λν΄ κ· μΌν κ°μ λ΄λ³΄λ΄λ μ½λλ₯Ό μΆκ°νκ±°λ λμ κ°μ²΄λ₯Ό κ°μν μ μλ€κ³ λ―Ώμ΅λλ€. λ€λ₯Έ μ¬λμ΄ λ λμ μ μμ ν μ μμ΅λλ€.
μ΄λ₯Ό μν΄ ν΄ν·μ μμ±νμ΅λλ€. λν v-modelμ μ¬μ©νμ¬ vuexλ₯Ό λ³κ²½ν μ μμ΅λλ€.
μ΄κ²μ νΈλ¦μ μνν΄μΌν©λλ€.
μ§λ Ή
Vue.directive('deep-model', {
bind(el, binding, vnode) {
el.addEventListener('input', e => {
new Function('obj', 'v', `obj.${binding.value} = v`)(vnode.context.$data, e.target.value);
});
},
unbind(el) {
el.removeEventListener('input');
},
inserted(el, binding, vnode) {
el.value = new Function('obj', `return obj.${binding.value}`)(vnode.context.$data);
},
update(el, binding, vnode) {
el.value = new Function('obj', `return obj.${binding.value}`)(vnode.context.$data);
}
});
μ¬μ©λ²(ꡬμ±μμ)
const component = Vue.extend({
template: `<input v-deep-model="'one.two.three'">`,
data() {
return {
one: { two: { three: 'foo' } }
};
}
});
μ¬κΈ° μμ μ°Έμ‘°κ° μμ΅λλ€.
μλ
νμΈμ μ¬κΈ°μλ μ΄λ€ λͺΈ. Laravelκ³Ό ν¨κ» VUE.jsλ₯Ό μ¬μ©νκ³ μμ΅λλ€. λ°μ΄ν°λ² μ΄μ€μμ κ°μ Έμ¨ λμ μ¬μ©μ μ μ μμ νλκ° μμ΅λλ€. @yyx990803μ νλ‘μ°νμ΅λλ€ . v-λͺ¨λΈ="μμ['μ΄λ¦']". νλκ° μλν©λλ€. κ·Έλ¬λ λ¬Έμ λ laravel 컨νΈλ‘€λ¬μμ νλ κ°μ κ°μ Έμ¬ μ μλ€λ κ²μ
λλ€. μ¬κΈ° μλ μ¬λ @tylerOtwell Form.js ν΄λμ€λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
λΉμ μ λμμ ν¬κ² κ°μ¬νκ² μ΅λλ€.
κ°μ¬ ν΄μ
μ΄κ²μ λμλ§ ν¬λΌμ΄ μλλλ€. https://forum.vuejs.orgμ μ§λ¬Έμ λ΅νκΈ° μν μ μ© μλΉμ€κ°
v-model
κ°μ μ°ΎκΈ° μν΄ νΈμΆλλ ν¨μλ₯Ό μ¬μ©νλ λ° μ λ§ μ΄λ €μμ κ²ͺμμ΅λλ€. μ¬κΈ° μκ° μμ΅λλ€.
λ€μκ³Ό κ°μ λ μ§ λ²μ μ νκΈ°λ₯Ό λ§λ€λ €κ³ ν©λλ€.
μ¬κΈ°μ μ¬μ μ€μ μ λ€μκ³Ό κ°μ λ°°μ΄μμ κ°μ Έμ΅λλ€.
presets = [
{
label: 'Today',
range: [moment().format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]
},
]
μ΄μ data
κ΅¬μ± μμμ ν΄λΉ μ
λ ₯ νλμ λν λ κ°μ λ μ§κ° μμ΅λλ€. startDate
& endDate
.
λ΄κ° μ λ§λ‘ νκ³ μΆμ κ²μ μ¬μ©μκ° μ νν λ μ§μ μ¬μ μ€μ ꡬμ±μμ μ λ¬λ λ μ§λ₯Ό λΉκ΅νκ³ v-model
κ°μ true
λλ false
μλνλ©΄...
v-model
λ 쑰건μ μλ½νμ§ μμΌλ―λ‘ preset.range[0] === startDate && preset.range[1] === endDate
ν μ μμ΅λλ€.v-model
λ v-for
λ³μΉμ΄ ν¨μμ μ λ¬λλ κ²μ νμ©νμ§ μμ΅λλ€. κ·Έλμ λλ λ€μκ³Ό κ°μ κ²μ ν μ μλ€.<li v-model="isActive(index)" v-for="(preset, index) in presets">
...
</li>
μ΅μν 쑰건문μ νμ©νλ©΄ μ΄ λ¬Έμ λ₯Ό μ½κ² ν΄κ²°ν μ μμ΅λλ€.
λν κ·Όλ³Έμ μΌλ‘ μλͺ»λ μμ μ μνν μ μμΌλ―λ‘ λ€λ₯Έ λ°©λ²μΌλ‘ λ¬μ±ν μ μλμ§ μ§μ ν΄ μ£Όμμμ€.
νμ¬ μ λ κ³μ°λ μμ±μ΄ ν¨μ νΈμΆμ΄λΌλ μ¬μ€μ μ΄μ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
computed: {
isActive() {
return this.presets.map(
preset =>
preset.range[0] === this.startDate && preset.range[1] === this.endDate
);
}
}
<li v-model="isActive[index]" v-for="(preset, index) in presets">
...
</li>
κ·Έλ¬λ κ·Έκ²μ μ λ§λ‘ λμκ² ν΄νΉμ²λΌ 보μ λλ€. νμ€νμ§ μλ€. μ μνμμμ€.
μ¬κΈ°μ μ€λͺ λ λλ‘ μ΄κ²μ΄ Vuexμ ν¨κ» μλνλμ§ μλ μ¬λμ΄ μμ΅λκΉ? https://vuex.vuejs.org/guide/forms.html
μ½κ° λμ μΈ μ λ ₯ νλλ₯Ό κ°κ³ μΆμ΅λλ€.
<input v-model="dataHandler" :scope="foo" type="checkbox" />
λ€μ μ½λ λ΄μμ dom μμμ "λ²μ"μ μ΄λ»κ² μ‘μΈμ€ν μ μμ΅λκΉ?
computed: {
message: {
get () {
//
},
set (value) {
//
}
}
}
@vielhuberκ° ref
λ₯Ό μ¬μ©νλ €κ³ ν©λκΉ?
<input ref="myInput" v-model="dataHandler" :scope="foo" type="checkbox" />
this.$refs.myInput.getAttribute('scope') // => 'foo'
μλ νμΈμ, μ΄ μ£Όμ μ κ΄λ ¨λ Vue μ§λ¬Έμ΄ μμ΅λλ€ - "λμ v-model μ§μλ¬Έ":
Vue κ΅¬μ± μμλ₯Ό ꡬνν λ v-model modifier - .lazy
λ±μ μ΄λ»κ² λμ μΌλ‘ μ μ΄ν μ μμ΅λκΉ?
μλ₯Ό λ€μ΄:
<el-input v-model[field.lazy ? '.lazy' : '']="model[field.key]">
μ΄κ²μ λλ₯Ό μν΄ μλν©λλ€.
<input v-model="$data[field].key" type="text">
@fritx μμ μλ₯Ό "λμ μΌλ‘" λ³κ²½νκΈ° μν΄ λ€μκ³Ό κ°μ΄ v-if λλ ν°λ₯Ό μ¬μ©νμ΅λλ€.
<input v-if="field.lazy" v-model.lazy="model[field.key]">
<input v-else v-model="model[field.key]">
μμ μμ λ€μν μ‘°ν©μ μνλ κ²½μ° λ²κ±°λ‘μΈ μ μμ΅λλ€.
ν κ°μ§ μ΅μ μ λͺ¨λ if λ¬Έμ ν¬ν¨νλ μ¬μ¬μ© κ°λ₯ν κ΅¬μ± μμλ₯Ό λ§λ€κ³ λ λλ§νλ €λ μ λ ₯ κ΅¬μ± μμμ μνλ μμ μκ° μλ μ λ ₯μ κ²°μ νλ μμ μ λ°°μ΄μ μ λ¬νλ κ²μ λλ€. μμ κ°μ if λ¬Έμ μ¬μ©νλ κ²λ§μΌλ‘λ μΆ©λΆνμ΅λλ€.
v-model μ§μλ¬Έμμ κ³μ°λ μμ±μ λμ μΌλ‘ μ‘μΈμ€νλ λ°©λ²μ μ°Ύμ μ μμ΅λλ€.
λ€μμ μ¬μ©νμ¬ λ°μ΄ν° μμ±μ μ‘μΈμ€ν μ μμΌλ―λ‘ λ΄ κ³μ°λ μμ±μ μ‘μΈμ€ν μ μλ λ°©λ²μ΄ μμ΅λλ€.
v-model="$data[무μΈκ°]"
λ΄ μ½λλ λ€μκ³Ό κ°μ΅λλ€.
computed: {
get () {
//
},
set (value) {
//
}
}
}
μ°Ύμ μ μλ λ¬Έμμ΄λ‘ κ³μ°λ μμ±μ μ‘μΈμ€νλ λ°©λ²μ΄ νμν©λλ€.
μ΄κ²μ μμ΄μ§λ§ λ€λ₯Έ μ루μ
λ μλν©λλ€.
<input v-model="$computed[someDynamicString]">
μλλ©΄ κ·Έλ₯
<input v-model="[someDynamicString]">
λ΄κ° μ°Ύμ κ°μ₯ κ°κΉμ΄ κ²μ "_computedWatchers[someDynamicString].value"μ΄μ§λ§ setter λ° getterμμλ μλνμ§ μμ΅λλ€. μλ§λ κ³μ°λ κ°μ΄λ©΄ μλν κ²μ λλ€.
v-model="dialogTemp.tmBasFuelEntities[dialogTemp.tmBasFuelEntities.findIndex(t=>t.paramCode==item.paramCode)].paramValue"
μ΄κ²μ λ΄ dialogTempμ λλ€.
dialogTemp: {
tmBasFuelEntities: [
{
paramCode: '',
paramValue: ''
},
{
paramCode: '',
paramValue: ''
},
{
paramCode: '',
paramValue: ''
},
]
}
@fritx μμ μλ₯Ό "λμ μΌλ‘" λ³κ²½νκΈ° μν΄ λ€μκ³Ό κ°μ΄ v-if λλ ν°λ₯Ό μ¬μ©νμ΅λλ€.
<input v-if="field.lazy" v-model.lazy="model[field.key]"> <input v-else v-model="model[field.key]">
μμ μμ λ€μν μ‘°ν©μ μνλ κ²½μ° λ²κ±°λ‘μΈ μ μμ΅λλ€.
ν κ°μ§ μ΅μ μ λͺ¨λ if λ¬Έμ ν¬ν¨νλ μ¬μ¬μ© κ°λ₯ν κ΅¬μ± μμλ₯Ό λ§λ€κ³ λ λλ§νλ €λ μ λ ₯ κ΅¬μ± μμμ μνλ μμ μκ° μλ μ λ ₯μ κ²°μ νλ μμ μ λ°°μ΄μ μ λ¬νλ κ²μ λλ€. μμ κ°μ if λ¬Έμ μ¬μ©νλ κ²λ§μΌλ‘λ μΆ©λΆνμ΅λλ€.
λ©μ§κΈ΄ νμ§λ§ λ무 μ₯ν©ν λ°λ‘ κ·Έ νλμ λ§μ μνμ μ λ¬ν΄μΌ νμ΅λλ€. @danhanson
<template v-else-if="itemCom">
<component v-if="getFieldType(field) === 'number'"
:is="itemCom"
:model="model"
:field="field"
:schema="schema"
v-model.number="model[field.key]"
v-loading="field.loading"
v-bind="getFieldAttrs(field)"
v-on="field.listen"
@form-emit="handleFormEmit"
></component>
<component v-else
:is="itemCom"
:model="model"
:field="field"
:schema="schema"
v-model="model[field.key]"
v-loading="field.loading"
v-bind="getFieldAttrs(field)"
v-on="field.listen"
@form-emit="handleFormEmit"
></component>
@fritx v-model
λ₯Ό :value
/ @input
νκ³ μλμΌλ‘ ꡬ문 λΆμν μ μμ΅λλ€.
</template>
<component v-if="getFieldType(field) === 'number'"
:is="itemCom"
:model="model"
:field="field"
:schema="schema"
:value="parseField(field, model[field.key])"
@input="model[field.key] = parseField(field, $event.target.value)"
v-loading="field.loading"
v-bind="getFieldAttrs(field)"
v-on="field.listen"
@form-emit="handleFormEmit"
></component>
<template>
<script>
export default {
...
methods: {
parseField (field, val) {
if (this.getFieldType(field) === 'number') {
return Number(val);
}
return val;
}
}
};
</script>
@danhanson λ©μ Έμ
@danhanson μ£μ‘ν©λλ€.
:value="getFieldValue(field, model[field.key])"
@input="model[field.key] = getFieldValue(field, $event)"
@change="model[field.key] = getFieldValue(field, $event)"
μ λͺ¨λ₯΄κ² μ΅λλ€. μλν΄ λ³΄κ² μ΅λλ€. κ°μ¬ ν΄μ!
@ninojovic
μ¬κΈ°μμ ν΄κ²°μ± μ μ°Ύμμ΅λλ€. https://forum.vuejs.org/t/accessing-computed-properties-from-template-dynamically/4798/9
<input v-model="_self[someDynamicString]">
λλ₯Ό μν΄ μλ
μ΄ κ°μ
<el-input
v-if="!nestedField.widget"
v-model="form[nestedField.id]"
placeholder=""
v-bind="nestedField.rest"
>
[
{
label: 'ζΆζΏδ»·ζ Ό',
id: 'housePrice',
type: Number,
widget: 'div',
fieldSet: [
{
label: '',
id: 'housePrice',
type: Number,
defaultValue: 0,
rest: {
style: 'width:5em;'
},
},
{
label: '',
id: 'priceUnit',
type: String,
widget: 'select',
defaultValue: 'ε
/ζ',
options: [
{ label: 'ε
/ζ', value: 'ε
/ζ' },
{ label: 'ε
/εΉ΄', value: 'ε
/εΉ΄' },
{ label: ' ε
/倩·m2', value: 'ε
/倩·m2' },
],
rest: {
style: 'width:6em;'
},
},
],
},
]
νλ μ νμ΄ Number
μ΄λ©΄ ν¨μ¬ λ νΈλ¦¬ν v-model.number
λ₯Ό μ¬μ©νκ³ μΆμ΅λλ€. @fritx
λλ κ·Έκ²μ λ§κ² v-modelμ λΆν΄ν©λλ€.
<el-input
v-if="!nestedField.widget"
:value="form[nestedField.id]"
@input="v => { form[nestedField.id] = isNumber(nestedField.type) ? Number(v) : v }"
placeholder=""
v-bind="nestedField.rest"
>
<template v-if="nestedField.suffixText" slot="append">{{nestedField.suffixText}}</template>
</el-input>
jqueryλ₯Ό μ¬μ©νμ¬ μ½μ νλ (μμ μ λ ₯μ μΌλΆ)λ₯Ό μ¬μ©νμ¬ HMTLμ 볡μ νμ΅λλ€. (λ΄κ° μ jqueryλ₯Ό μ¬μ©νλμ§ λ§νμ§ λ§μμμ€). μ΄μ λ΄ μμκ° jqueryμ μν΄ μ½μ λκ³ μμ΅λλ€. κ·Έλμ v-modelμ λ°μΈλ©ν μ μμ΅λλ€.
$('.area').append('formPart')
in form i have some inputs like
<div class="form-group">
<input type="text" name="area2" />
<input type="text" name="area3" />
</div>
κ·Έλμ μμ 2μ 3μμ v-modelμ μ΄λ»κ² λ°μΈλ©ν μ μμ΅λκΉ?
@ninojovic
μ¬κΈ°μμ ν΄κ²°μ± μ μ°Ύμμ΅λλ€. https://forum.vuejs.org/t/accessing-computed-properties-from-template-dynamically/4798/9
<input v-model="_self[someDynamicString]">
λλ₯Ό μν΄ μλ
μ μκ²λ ν¨κ³Όκ° μμ§λ§ "_self" λ³μλ Vueμ λ΄λΆ μμ±μ μν΄ μμ½λμ΄ μμ΅λλ€(#2098 μ°Έμ‘°).
μ¦, μ΄ κ΅¬νμ λ―Έλμ μ€λ¨λ μ μμ΅λλ€.
λλ μ΄ λ°©λ²μ μ νΈνλ€:
<template>
<input v-model="mySelf[someDynamicString]">
</template>
<script>
export default {
data() {
return {
mySelf: this
}
}
}
</script>
μμΈν λ΄μ©μ https://stackoverflow.com/questions/52104176/use-of-self-attribute-from-vue-vm-is-reliableμ μ°Έμ‘°νμμμ€.
κ°μ₯ μ μ©ν λκΈ
v-model="form[field.name]"
μ΄λ―Έ ν μ μμ΅λλ€.