【问题标题】:knockout js: parameters in templated bindings淘汰js:模板化绑定中的参数
【发布时间】:2011-12-14 10:01:50
【问题描述】:

我正在尝试对我的项目中经常使用的一些组件进行模板化。省略 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

【问题讨论】:

  • 在 data-binds 内部,您可以直接访问可用的变量,因此您可以执行类似 `data-bind="value: $data[$item.fieldName]" 之类的操作
  • 感谢您的评论。这不是问题的确切解决方案,但它为我提供了解决方案的正确方向。

标签: javascript knockout.js jquery-templates


【解决方案1】:

我遇到了同样的问题,经过一番苦苦挣扎后,我通过不使用外部模板引擎的淘汰赛 1.3 beta(现在它在 RC 中)解决了这个问题。它也不支持templateOptions,但这不是问题。我刚刚为模板构建了一个自定义数据,其中包含作为属性的主要数据以及包含我在 1.2 中的 templateOptions 中传递的内容的其他属性。我在data 参数中传递了它,一切正常。

【讨论】:

  • 请您发布一些存根代码,演示您如何管理它以在data-bind 中拥有一个具有动态绑定的模板。
  • 我可以,但要等到今晚,因为它驻留在我的家用电脑上,我现在正在工作。不知道您的时区,但从现在起不少于 6/7 小时。如果你能等那么久,我很乐意提供帮助。
  • 如果你能这么好,我会很感激的;)。
  • 好的,我回家后会提醒您这样做。我将使用代码示例更新我的帖子。回来查看 l8r :)
【解决方案2】:

试试

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

【讨论】:

  • 我测试过这个也不起作用。 data-bind 评估不同于 knockout.js 中的任何其他属性。如果您将相同的代码放在不同的属性上,它会起作用,但在 data-bind 中却不行。
【解决方案3】:

很遗憾,我需要自己回答。但我设法让它工作。感谢 RP Niemeyer 的提示。

致所有对此感兴趣的人:

Observables 在模型someModel 中通过注册组件方法动态生成。这个 observables 的名字总是像 &lt;field&gt;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' } }">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多