fun*_*eah 6 javascript handlebars.js meteor
我在模板Nav中有一个名为{{renderNav}}的模板助手
例如
Template.Nav.renderNav
Run Code Online (Sandbox Code Playgroud)
在该辅助函数中,我想在另一个模板中解析另一个帮助器的渲染输出
例如助手
Template.contentWindow.content
Run Code Online (Sandbox Code Playgroud)
它提供了html
{{content}}
Run Code Online (Sandbox Code Playgroud)
我的renderNav帮助器想要分割替换{{content}}的html来生成html for
{{renderNav}}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?现在{{renderNav}}帮助程序执行或运行得更快,因此它无法解析替换{{content}}的html
@Hugo - 我按照你的建议在我的代码中执行了以下操作
Template.contentWindow.rendered = function() {
debugger;
return Session.set('entryRendered', true);
};
Template.Nav.renderNav = function() {
debugger;
var forceDependency;
return forceDependency = Session.get('entryRendered');
};
Run Code Online (Sandbox Code Playgroud)
当我运行它时,调试器在执行renderNav帮助程序时首先停止.(这与我在比赛条件方面所看到的有关).然后contentWindow呈现并且我点击Session.set上方的断点('entryRendered',true).但是然后renderNav不再按照你的建议再次运行.我是否误解或错误地实施了您的建议?
您需要在要重新运行的模板中存在依赖项。可能性很小,具体取决于您想要获取什么数据。
例如,您可以在content模板中设置一个反应标记,该标记将通知renderNav绘图已完成。
Template.contentWidnow.rendered = function() {
...
// Set this on the very end of rendered callback.
Session.set('contentWindowRenderMark', '' +
new Date().getTime() +
Math.floor(Math.random() * 1000000) );
}
Template.renderNav.contentData = function() {
// You don't have to actually use the mark value,
// but you need to obtain it so that the dependency
// is registered for this helper.
var mark = Session.get('contentWindowRenderMark');
// Get the data you need and prepare for displaying
...
}
Run Code Online (Sandbox Code Playgroud)
根据您提供的更多信息,我们可以创建这样的代码:
内容.js
Content = {};
Content._dep = new Deps.Dependency;
Run Code Online (Sandbox Code Playgroud)
内容窗口.js
Template.contentWidnow.rendered = function() {
Content.headers = this.findAll(':header');
Content._dep.changed();
}
Run Code Online (Sandbox Code Playgroud)
渲染导航.js
Template.renderNav.contentData = function() {
Content._dep.depend();
// use Content.headers here
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8887 次 |
| 最近记录: |