如何从动态生成的表单元素获取值

时间:2019-08-02 09:29:57

标签: canjs canjs-view canjs-component

在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") 

1 个答案:

答案 0 :(得分: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%准确,但是应该可以使您接近。要点是要从要迭代的数组中实际读取项目。