我试图模拟我项目中经常使用的一些组件。省略html内容中引入的冗余。但是如果有可能的话,我也没弄明白。
我有一个模板:
<script type="text/x-jquery-tmpl" id="somefieldtemplate" >
<input name=" Prefix" type="text" data-bind="value: ${ $item.fieldName}SomeField" />
..... mor contents ...
</script>
绑定到输入组件的参数应该是可调整的,因为有人可以通过模板选项看到,所以我有一个像
这样的条目<div data-bind="template: { name: 'somefieldtemplate',
templateOptions:
{ fieldName:'somefield', displayName:'somefieldlabel' } }">
我的控制台日志中的错误消息是:
SyntaxError: Unexpected token {
我将问题缩小到这样一个事实:如果我删除$item.fieldName
及其值,它就会起作用。
有没有人能够解决这个问题呢?
编辑:
正如我目前在版本中使用knockout.js的信息:knockout-latest
答案 0 :(得分:1)
我遇到了同样的问题,在经历了很多努力之后,我通过移动到淘汰1.3 beta(现在它在RC中)解决了它,它不使用外部模板引擎。它也不支持templateOptions
,但这不是问题。我刚刚为模板构建了一个自定义数据,其中包含作为属性的主数据以及包含我将在1.2中的templateOptions中传递的内容的其他属性。我在data
参数中传递了它,一切正常。
答案 1 :(得分:0)
尝试
data-bind="value: ${fieldName} + 'SomeField'"
答案 2 :(得分:0)
可悲的是,我需要自己回答。但我设法让它工作。感谢RP Niemeyer的提示。
对于对此感兴趣的每个人:
使用寄存器组件方法在模型someModel
中动态生成Observable。这个可观察对象的名称总是<field>SomeField
模板:
<script type="text/x-jquery-tmpl" id="somefieldtemplate" >
<input name="${$item.fieldName}Prefix" type="text" data-bind="value: someModel[$item.fieldName + 'SomeField']" />
..... more contents ...
</script>
模板的结合:
<div data-bind="template: { name: 'somefieldtemplate',
templateOptions:
{ fieldName:'somefield', displayName:'somefieldlabel' } }">