Один из вариантов - передать Bar.class
(или любой другой тип, который вас интересует, любым способом указания соответствующей ссылки Class<T>
) и сохранить это значение как поле:
public class Test
{
public static void main(String [] args)
throws Exception // Just for simplicity!
{
Generic<Bar> x = new Generic<Bar>(Bar.class);
Bar y = x.buildOne();
}
}
public class Generic<T>
{
private Class<T> clazz;
public Generic(Class<T> clazz)
{
this.clazz = clazz;
}
public T buildOne() throws InstantiationException,
IllegalAccessException
{
return clazz.newInstance();
}
}
public class Bar
{
public Bar()
{
System.out.println("Constructing");
}
}
Другой вариант - иметь «фабричный» интерфейс, и вы передаете фабрику конструктору универсального класса. Это более гибко, и вам не нужно беспокоиться об исключениях отражения.
v-model
работает при правильном использовании.
См. этот JS Fiddle: https://jsfiddle.net/eywraw8t/167740/
Но если вы хотите использовать функцию для обработки значений , это также прекрасно, но гораздо более подробный.
См. этот JS Fiddle: https://jsfiddle.net/eywraw8t/167731/
См. документы: https://vuejs.org/v2/api/#v-on
[...] метод получает собственное событие как единственный аргумент. Если используется оператор inline, оператор имеет доступ к специальному свойству
$event
:v-on:click="handle('ok', $event)"
.
"input"
event
имеет свойствоtarget
, которое в вашем случае является вашим<input>
элементом, на котором вы можете прочитать его текущийvalue
.
new Vue({ el: '#app', methods: { saveValue(event) { const target = event.target; const value = target.value; console.log(value); }, otherMethod(text1, event) { console.log(text1); console.log(event.target.value); }, }, });
<script src="https://unpkg.com/vue@2"></script> <div id="app"> <ul> <li v-for="i in 3"> {{i}}<input @input="saveValue" /> </li> </ul> <p> With inline statement: <input @input="otherMethod('other', $event)" /> </p> </div>