0

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

1 回答 1

0

目前尚不清楚您使用的是哪个版本的 CanJS。看起来您正在使用 mustache ......这意味着您正在使用 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% 准确,但它应该能让你接近。要点是您要实际读取要迭代的数组中的项目。

于 2019-09-06T17:26:06.440 回答