Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° v-model Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠΈΠΏΠ° ΡΡΠΎΠ² Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ, Π½ΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ»Π° Π±Ρ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»Ρ ΡΠΎΡΠΌ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ?
Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»ΠΎΠ½ phpmyadmin, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° DESCRIBE TABLE ΠΈ ΡΡΡΠΎΠΈΡ ΡΠΎΡΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΡΡΡΠΎΠΊ ΠΈΠ· ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ 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]"
.
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ? Π£Ρ ΡΡ !
ΠΠ²Π°Π½, ΠΌΠΎΠΆΠ΅ΡΡ Π»ΠΈ ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ js, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°Π΄Π°ΡΠΈ?
@ yyx990803 , ΡΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π½ΠΎ ΡΡΠΎ Π±ΡΠ» Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ.
Π§ΡΠΎΠ±Ρ Π±ΡΡΡ ΡΡΠ½ΡΠΌ, Ρ ΠΏΡΠΎΡΠΈΠ² ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ Π²Π½ΡΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ². ΠΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΡ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ° (Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π² DOM ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°). ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ² Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ΅Π½Π΅Π½Ρ, Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π΄Π²ΡΠΌΡ ΡΡΠΎΠ²Π½ΡΠΌΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΎΡΠ΅Π½Ρ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΌΠΈ.
Ρ Π΄ΡΠΌΠ°Ρ, Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ 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'>
ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ / ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ.
ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ: Ρ Π½Π΅ ΡΠΈΡΠ°Π» ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ 2.0, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈΡΡ ΠΊ ΡΡΠΎΠΌΡ ΡΠ°ΠΌ.
@bhoriuchi, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°?
computed: {
varPath: function() {
return this.myData.path.to['my'].obj;
},
},
<component-name :myparam="varPath"></component-name>
Π Π΄Π»Ρ v-model
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΡΠ΅ΡΡΠ΅ΡΠΎΠΌ.
@simplesmiler Π― Π½Π΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π²ΡΡΠΈΡΠ»ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅, Ρ
ΠΠ±Π½ΠΎΠ²Π»ΡΡΡ
@simplesmiler - ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ. this
Π²Π½ΡΡΡΠΈ Π³Π΅ΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ value
Π² get(value)
ΠΎΠ±Π° ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΡΠΎΡΠΈΠΈ ΠΌΠΎΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Π― ΡΠΎΠ·Π΄Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ json Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌ. ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΡΡΡΠΎΠΊ / ΡΠΎΡΠΌ). ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎΡΠΌΡ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° ΠΏΡΡΠΈ ΠΊ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ. ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΡΠΎΠΊΠΈ / ΡΠΎΡΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΡΡΡ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΡΡ
ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ formData
ΠΊΠΎΡΠΎΡΠΎΠΌΡ Ρ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΎΡΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ v-model="formData[rowIndex][formIndex]"
ΠΈ Ρ Π½Π°Π±Π»ΡΠ΄Π°Ρ Π·Π° ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π°Π½Π½ΡΡ
, Π½ΠΎ Ρ ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ ΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ.
ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ 2 ΡΡΠΎΠ²Π½Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»Ρ ΡΠΎΡΠΌ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ
data: {
templates: {
operatingSystems: {
<someuuid1>: [ <osid1>, <osid2> ],
<someuuid2>: [ <osid5>, <osid10>, <osid22> ]
}
}
}
Π³Π΄Π΅ ΠΌΠΎΡ ΡΡΡΠΎΠΊΠ° ΠΏΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ
templates.operatingSystems[<dynamic uuid>]
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ 2
Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅Π» Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π° ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ
"<rowIndex>_<formIndex>"
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π³Π»ΡΠ±ΠΎΠΊΠΈΠ΅ ΡΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ. Π― ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΌΠ΅ΠΆΠΏΠ»Π°Π½Π΅ΡΠ½Π°Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° Π±ΡΠ»Π° Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ.
+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') Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅
Π― ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π» ΡΡΠΎ ΠΈ Π½Π°ΡΠ΅Π» Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ Π³Π΅ΡΡΠ΅ΡΡ / ΡΠ΅ΡΡΠ΅ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΠΏΡΡΠΈ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
ΡΠΏΠΈΡΠΎΠΊ Π²Π²ΠΎΠ΄Π°
<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, Π½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ vue.set, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ , ΠΈΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ΅Π»Π΅Π²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. Π£ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π― Π½Π°ΠΏΠΈΡΠ°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ. ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ vuex Ρ ΠΏΠΎΠΌΠΎΡΡΡ v-ΠΌΠΎΠ΄Π΅Π»ΠΈ
ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡΡ:
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π°
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' } }
};
}
});
ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π°
ΠΡΠΈΠ²Π΅Ρ Π²ΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ VUE.js Ρ Laravel. Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΏΠΎΠ»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΠΎΡΠΌΡ, ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
. Π― ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π»ΡΡ Π½Π° @ yyx990803 . v-model = "ΡΠΎΡΠΌΠ° ['ΠΈΠΌΡ']". ΠΠΎΠ»Π΅Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΡ. ΠΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ 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-ΠΌΠΎΠ΄Π΅Π»ΠΈΒ»:
ΠΠΎΠ³Π΄Π° Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Vue, ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ v-ΠΌΠΎΠ΄Π΅Π»ΠΈ - .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", Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ΅ΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈ Π³Π΅ΡΡΠ΅ΡΠ°ΠΌΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π±Ρ, Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
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-ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΏΠΎΠ΄ΠΎΡΠ»Π° ΠΊ Π½Π΅ΠΉ.
<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>
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΊΠ»ΠΎΠ½ HMTL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ (ΡΠ°ΡΡΡ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΠΎΡΠΌΡ), ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π²ΡΡΠ°Π²Π»ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ jquery. (Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ jquery). ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ jquery. ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ v-ΠΌΠΎΠ΄Π΅Π»Ρ.
$('.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>
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ v-ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊ ΠΎΠ±Π»Π°ΡΡΠΈ 2 ΠΈ 3.
@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]"
.