问题标签 [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.

0 投票
1 回答
2045 浏览

google-closure-templates - 如何检查大豆模板中的空地图?

我已经阅读了Google Soy/Closure 模板的文档,但找不到任何方法来检查 Map 是否为空;我只能查找给定键的映射值。有没有办法找出地图的大小?

我目前的解决方法是用模板替换任何空地图,null然后null在模板中检查,例如:

0 投票
1 回答
390 浏览

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 valuechrome-extension://...for |filterNormalizeUri

有关转义的信息:https ://developers.google.com/closure/templates/docs/security#in_urls

0 投票
1 回答
84 浏览

plugins - 是否可以重用 atlassian 的 stash *.soy 中的代码

是否可以重用 atlassian 的 stash *.soy 中的代码?

我需要在 Stash 的登录页面上添加一个按钮login.soy
经过一些研究,我知道我们可以.soy使用 soyTemplateRenderer 重写,但没有运气。

你能解释一下我们如何重写或更改 Stash 的模板吗?

0 投票
1 回答
1790 浏览

html - 闭包模板:从大豆文件中传递的参数设置全局变量

有没有办法将 .soy 文件中的全局变量设置为从 .html 传入的参数?这样所有模板都能够访问全局变量,以避免将相同参数重新传递给每个模板的冗余。

例如像这样工作的东西:

HTML:

大豆:

并且可以从所有其他模板访问 globalVariable

0 投票
1 回答
609 浏览

jira-plugin - 加载资源失败:大豆模板 {并非所有代码都采用 Soy V 2 语法(发现文件 simple.soy 不是 Soy V2 语法)。}

我的插件中有两个大豆模板,其中一个加载正常,但另一个没有加载 500 内部服务器错误。我从控制台附加错误。

在此处输入图像描述

在此处输入图像描述

这是我的代码:

0 投票
1 回答
3912 浏览

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 语句,我认为这不是最佳做法。谁知道正确的方法

0 投票
3 回答
392 浏览

javascript - 在大项目的闭包模板中没有继承怎么能活?

我们使用闭包库和闭包编译器,我们想使用闭包模板。

但是闭包模板没有继承。这对我们来说确实是个问题。

据我了解,闭包模板没有继承的原因是因为模板必须简单且易于阅读。

但是在大项目中没有继承怎么能活呢?

例如,我们有一个模板文件button.soyproject.createButton ,它使用公共模板和私有模板生成按钮: project.createOpenTag_, project.createCSSClasses_, project.createAttributes_, project.createContent_, project.createCloseTag_

我们有 JavaScript 类project.Button,并且我们有project.ButtonCircle(也许这个单独的类project.ButtonCircle似乎没有必要,但这只是一个示例)扩展了project.Button.

project.ButtonCircleproject.createButton需要对模板进行少量更改。

当然我们可以添加新的功能project.createButton,但这是一个非常糟糕的主意,因为这种方法将来会创建怪物模板。

或者我们可以project.createCircleButton在文件button-circle.soy中创建公共模板,从中调用所有私有模板project.createButton,当我们需要“覆盖”这些私有模板之一时(例如project.createCSSClasses_),我们只需在button-中创建新的私有模板- circle.soy的名字project.createCSSClassesCirbleButton_

然而在这种情况下,我们需要将所有内容从 复制粘贴project.createButtonproject.createCircleButton。这太可怕了。

我们也尝试使用委托模板,但它不适合继承。

解决这个问题的方法是什么?

0 投票
0 回答
279 浏览

google-closure-templates - 在javascript中显示大豆变量值,如警报

我们在 soy 文件中是否有任何与 javascript alert() 等效的东西来显示变量值?

我也尝试在大豆中使用 javascript,如下所示,但没有帮助(extendedFieldView 是一个列表):

谢谢!

0 投票
1 回答
199 浏览

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}...

它不会立即失败,而是在模板深处的某个地方解析它总是给出该异常。

0 投票
1 回答
451 浏览

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 对震耳欲聋的安静的回答。