【问题标题】:Can I declare local/temp variables within a jQuery template?我可以在 jQuery 模板中声明本地/临时变量吗?
【发布时间】:2011-07-06 02:06:54
【问题描述】:

是否可以在 jQuery 模板语法中声明新变量?我希望能达到这样的效果(这是行不通的):

{{var test = "test"}}

<div>
    ${test}
</div>

【问题讨论】:

  • 为什么不声明使用模板的变量呢?或者制作您自己的自定义“模板扩展”,采用常见做法并将它们与典型模板用法区分开来。
  • 因为变量的上下文与模板逻辑相关,应该保持封装在模板中。例如,如果我想在 {{each}} 循环中遇到某些问题时设置一个布尔标志,然后让模板稍后在几个地方显示不同的东西,具体取决于该布尔值。

标签: javascript jquery templates


【解决方案1】:

我知道这已经被回答和接受了,但这里有另一个解决方案:

${( $data.localVariable = 'SOMETHING' ),''}

一个 jsFiddle 示例:http://jsfiddle.net/brettwp/PrfZ5/

【讨论】:

  • 这是一个非常干净的实现,我已经开始使用了。使用这种语法,很容易在我的模板中定义局部变量,否则需要对我的模型进行昂贵的调用。 (我目前正在将它与 KnockoutJS 一起使用。)感谢您提供不依赖技巧或黑客的简单解决方案。
  • 简洁优雅。绝对是我从现在开始的方式
  • 谢谢。真的行。当我有很多 if、else、if、else 等时,我会使用它。
  • 我遇到了类似的情况,我需要在运行时将值分配给localVariable。我尝试使用对象表示法,但没有奏效。可能吗?我想做这样的事情:${( $data.localVariable = testObject.name ),''} testObject 是我在模板中操作的服务器的响应。 TIA。
  • 如果您将 ${localVariable } 传递给另一个模板,那么您如何在下一个模板中访问该数据?
【解决方案2】:

这很蹩脚,但一个可行的技巧是:

  {{each(i, test) ["test"]}}
    blah blah ${test} blah
  {{/each}}

但我不能 100% 确定使用这样的数组常量表达式;我会设置一个小提琴。 (编辑是的,它可以工作:-)

【讨论】:

  • 哇,酷。 ["test"] 到底是什么?快速搜索数组常量表达式似乎没有帮助。
  • 它只是一个包含单个字符串的数组(“test”)。 “{{each}}”的想法是迭代,但副作用是您可以将变量设置为表达式的值。有了这个技巧,你可以用任何你想要的表达式来代替 ["test"] 循环变量的值——它必须是一个数组,里面有一个值:-)
  • 哈哈,绝对是一个黑客!接受答案,因为它有效,支持创造力。 :-D
  • 是的,我认为这是一个狡猾的解决方案,先生。
猜你喜欢
  • 2019-11-01
  • 1970-01-01
  • 2015-01-04
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2020-11-16
相关资源
最近更新 更多