问题标签 [soy-templates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-closure-templates - 如何检查大豆模板中的空地图?
我已经阅读了Google Soy/Closure 模板的文档,但找不到任何方法来检查 Map 是否为空;我只能查找给定键的映射值。有没有办法找出地图的大小?
我目前的解决方法是用模板替换任何空地图,null
然后null
在模板中检查,例如:
google-chrome-extension - 关闭使用 autoescape=strict 禁用 URL 替换
我正在使用 Closure 为 chrome 扩展渲染一个大豆模板,并且在插入chrome-extension://*
链接时遇到问题,因为它们被过滤了soy.$$filterNormalizeUri
虽然通常不允许chrome-extension://*
链接是不可取的,但它在 chrome 扩展中是有意义的。
有没有办法将协议列入白名单或允许未过滤的 URL 替换的特定情况(可能使用soy.$$normalizeUri
而不是soy.$$filterNormalizeUri
)?输入不是用户定义的,应该可以安全使用。
例子:
$list
生成的样式表路径列表在哪里chrome-extension://*
返回的错误是Uncaught AssertionError: Failure: Bad value
chrome-extension://...for |filterNormalizeUri
有关转义的信息:https ://developers.google.com/closure/templates/docs/security#in_urls
plugins - 是否可以重用 atlassian 的 stash *.soy 中的代码
是否可以重用 atlassian 的 stash *.soy 中的代码?
我需要在 Stash 的登录页面上添加一个按钮login.soy
。
经过一些研究,我知道我们可以.soy
使用 soyTemplateRenderer 重写,但没有运气。
你能解释一下我们如何重写或更改 Stash 的模板吗?
html - 闭包模板:从大豆文件中传递的参数设置全局变量
有没有办法将 .soy 文件中的全局变量设置为从 .html 传入的参数?这样所有模板都能够访问全局变量,以避免将相同参数重新传递给每个模板的冗余。
例如像这样工作的东西:
HTML:
大豆:
并且可以从所有其他模板访问 globalVariable
jira-plugin - 加载资源失败:大豆模板 {并非所有代码都采用 Soy V 2 语法(发现文件 simple.soy 不是 Soy V2 语法)。}
我的插件中有两个大豆模板,其中一个加载正常,但另一个没有加载 500 内部服务器错误。我从控制台附加错误。
这是我的代码:
if-statement - 大豆模板中 IF 的多个条件
我在项目中使用 SOY V2 模板,并且需要在 IF 语句中使用多个条件。我一直在寻找几个小时,并没有找到任何东西。本质上我想复制:
if (value !== null and value > 0)
我努力了:
{if $value != null & $value >0}
{if $value != null && $value >0}
{if $value != null, $value >0}
{if $value != null; $value >0}
但所有这些都会导致错误“不在 SOY V2 语法中”。所以现在我正在嵌套 if 语句,我认为这不是最佳做法。谁知道正确的方法
javascript - 在大项目的闭包模板中没有继承怎么能活?
我们使用闭包库和闭包编译器,我们想使用闭包模板。
但是闭包模板没有继承。这对我们来说确实是个问题。
据我了解,闭包模板没有继承的原因是因为模板必须简单且易于阅读。
但是在大项目中没有继承怎么能活呢?
例如,我们有一个模板文件button.soyproject.createButton
,它使用公共模板和私有模板生成按钮: project.createOpenTag_
, project.createCSSClasses_
, project.createAttributes_
, project.createContent_
, project.createCloseTag_
。
我们有 JavaScript 类project.Button
,并且我们有project.ButtonCircle
(也许这个单独的类project.ButtonCircle
似乎没有必要,但这只是一个示例)扩展了project.Button
.
project.ButtonCircle
project.createButton
需要对模板进行少量更改。
当然我们可以添加新的功能project.createButton
,但这是一个非常糟糕的主意,因为这种方法将来会创建怪物模板。
或者我们可以project.createCircleButton
在文件button-circle.soy中创建公共模板,从中调用所有私有模板project.createButton
,当我们需要“覆盖”这些私有模板之一时(例如project.createCSSClasses_
),我们只需在button-中创建新的私有模板- circle.soy的名字project.createCSSClassesCirbleButton_
。
然而在这种情况下,我们需要将所有内容从 复制粘贴project.createButton
到project.createCircleButton
。这太可怕了。
我们也尝试使用委托模板,但它不适合继承。
解决这个问题的方法是什么?
google-closure-templates - 在javascript中显示大豆变量值,如警报
我们在 soy 文件中是否有任何与 javascript alert() 等效的东西来显示变量值?
我也尝试在大豆中使用 javascript,如下所示,但没有帮助(extendedFieldView 是一个列表):
谢谢!
xml - Google Soy 模板库是否可能存在 xml 问题?
我正在尝试使用 Soy 构建 XML 文档并收到以下错误:
com.google.template.soy.parsepasses.contextautoesc.SoyAutoescapeException:在文件 C:\Users\jeff\workspaceEMC\PAC\target\classes\templates\XML_template.soy:33:24,模板 vulcan.xml.body:无法计算原始文本的输出上下文`...
我想知道 XML 中的斜杠等(此错误发生在为标签分配值之前)是否会使解析器失效。我正在调试器中单步执行 Soy 代码,但这对我来说非常困难。
为了澄清我在尝试什么,我的 .soy 模板文件看起来就像 {$bar}...
它不会立即失败,而是在模板深处的某个地方解析它总是给出该异常。
jira - 如何从大豆模板的对象中获得精确值?
我们正在修改 JIRA Service Desk 3 通知大豆模板,以使它们在我们等待 JSD-218 被执行时更有用。我们主要是编辑 issue-conversational-notifications.soy。
我们可以很容易地得到 {$issue.key} 和 {$issue.summary} 来显示,但是提取描述的值是一个挑战。描述嵌套在 {$issue.fields} 对象中,如下所示:
但是 {$issue.fields.value.html} 的简单假设不起作用。阅读关于闭包模板的文档让我迷失了如何提取关键值的 HTML 值,这是关键字段的值?
也试过:
- {$问题[6][2][0]}
- {$issue.fields['value']['html']}
- {$issue.fields['value':'html']}
有没有人在这方面取得任何成功?我已经询问了 Atlassian 对震耳欲聋的安静的回答。