Как получить значения из динамически генерируемых элементов формы
В canJs мы используем can-value для привязки значений элемента к контроллеру.
//In controller
scope.attr("parameter") // It will give the value
//In mustache
<input type="text" can-value="parameter"/>
Но как связать значения динамически генерируемых компонентов с контроллером? Я пробовал следующим образом
//In mustache
{{each arrayValues}}
<input type="text" can-value="parameter{{@index}}"/>
{{/each}}
но следующее не определено
scope.attr("parameter1")
0 ответов
Неясно, какую версию CanJS вы используете. Похоже, вы используете усы... что означает, что вы используете CanJS v2.x... который был объявлен устаревшим давно - вам действительно следует обновить его.
Как бы то ни было, вы хотите иметь can.List
ваших элементов, и при итерации по этому списку вы ссылаетесь на элемент в списке. Это выглядело бы примерно так:
scope.attr('parameters'); //-> ["foo", "bar"]
{{#each parameters}}
<input type="text" can-value="{{.}}"/>
{{/each}}
Если вы используете v2.3, вы должны использовать вместо этого {($value)}:
{{#each parameters}}
<input type="text" {($value)}="{{.}}" />
{{/each}}
Обратите внимание, что прошло много лет с тех пор, как я использовал CanJS v2.x, поэтому приведенное выше может быть не на 100% точным, но оно должно приблизить вас. Главное, что вы действительно хотите читать элементы из массива, по которому вы выполняете итерацию.