2011-12-14 52 views
2

我试图模板在我的项目中经常使用的一些组件。省略html内容中引入的冗余。但是我没有弄明白,如果它甚至有可能这样做。敲除js:模板绑定中的参数

我有这样一个模板:

<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

内的数据结合,你可以直接访问可用的变量,所以你可以这样做`data-bind =“value:$ data [$ item.fieldName]” – 2011-12-15 00:50:50

+0

感谢您的评论。这不是问题的确切解决方案,但它给了我解决方案的正确方向。 – fyr 2011-12-15 07:09:23

回答

0

可悲的是我需要自己回答。但我设法让它工作。感谢RP尼迈耶的提示。

对于大家兴趣在此:在模型someModel与寄存器部件的方法动态生成

观测量。该观测一向喜欢的名字<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' } }"> 
0

尝试

data-bind="value: ${fieldName} + 'SomeField'" 
+0

我测试过这也不起作用。 `data-bind`评估与`knockout.js`中的任何其他属性不同。如果你把相同的代码放到不同的属性中,它将会是真的,但不在数据绑定中。 – fyr 2011-12-14 10:36:19

1

我有同样的问题和挣扎了很多之后,我通过移动解决它淘汰1.3测试版(现在在RC),它不使用外部模板引擎。它不支持templateOptions,但这不是问题。我只为模板构建了一个自定义数据,其中包含主要数据作为属性以及包含我将在1.2中的templateOptions中传递的内容的其他属性。我通过了data参数,并且一切正常。