Как получить значения из динамически генерируемых элементов формы

В 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% точным, но оно должно приблизить вас. Главное, что вы действительно хотите читать элементы из массива, по которому вы выполняете итерацию.

Другие вопросы по тегам