Kendo MVVM:如何将函数绑定到模板内的模板?

Kendo MVVM: How to bind a function to a Template inside a Template?

我这里准备了一个简单的道场:http://dojo.telerik.com/iQERE

场景:

我在另一个数组中有一个数组,我想用 kendo 模板以某种 table/grid 的形式呈现它。 第一个数组的项目是行,内部数组的项目是列。

我用谷歌搜索并找到了这个技巧:template inside template

问题是:

1) 如何绑定嵌套数组项的值?

我尝试了 data-bind="value:subval" 但它不起作用。

我认为因为使用该技术,此模板的 'real data' 是外部数组,而不是内部数组!

尝试过data-bind="value: item.subval" - 没有结果。

所以最后我尝试了 data-bind="value: subList[#:index#].subval" 并且成功了。但我问自己:这是正确的吗?

2) 如何将值绑定到嵌套模板中的函数? (著名的 kendo mvvm 计算字段)。

我希望我可以将所有输入绑定到一个独特的函数,该函数采用 'caller' 值并做一些事情(例如乘以另一个模型字段)。 但是我无法摆脱调用该函数的人...我的 "e" 参数是整个数据!!

经过一些实验后,我尝试了这种方式:http://dojo.telerik.com/OpOja 并且第一次成功...但是当模型的 value1 发生变化时(我希望在正常的 mvvm 中),该函数似乎不会触发行为),可能是因为我在 dataSource 中声明了函数。 (它本身不是 observable 对象?)

希望我解释清楚我的问题!

嗯..好像不行。来自 Telerik 票证的响应: 恐怕 Kendo MVVM 框架不允许您在所讨论的场景中实现所需的双向绑定。原因是模板中的 $.each() 只会执行一次,不会在 viewModel 更改时重新计算。

此外,如果您需要为 MVVM 模型配置分层数据源,我建议您遵循 this example。您会注意到,与您的实现类似,它包含一个字段,该字段是作为另一个字段的函数计算的。但是,它也不允许您进行所需的双向绑定。所以value1字段的更新不会再次触发上述函数。