![](/img/trans.png)
[英]how to make a meteor template helper re-run/render after another template has rendered?
[英]Meteor helper has run
如何檢查所有流星助手已經運行?
使用此代碼時,我得到一個新的空div。 當我從渲染函數中刪除代碼並從控制台運行它時,一切正常。
Template.CasesShow.helpers({
value: function (n) {
if (this.data) {
var result = this.data.filter(function (obj) {
return obj.name == n;
});
if (result && result[0])
return result[0].value;
}
}
});
Template.CasesShow.rendered = function () {
$(document).ready(function () {
$textarea = $('[name=1]');
var content = $textarea.val().replace(/\n/g, '<br />');
$textarea.replaceWith($('<div class="box">' + content + '</div>'));
});
};
<template name="CasesShow">
<textarea class="w-input box" placeholder="{{_ 'laborauftrag.praxis'}}" name="1" data-name="1">{{value 1}}</textarea>
</template>
所以我認為,Meteor尚未插入該值,這很奇怪,因為那時它不應該運行渲染函數,對嗎?
如何確定Meteor已運行助手?
Template.rendered = func
將在模板的幫助程序之前運行一次(並且在您的路由為您提供數據之前很長時間)。 當您具有Template.rendered
函數時,您的模板無法正常工作,因為在渲染函數中,您將div替換為textarea,而在helper中,您將返回在textarea上不再存在的值(因為Template.CaseShow.rendered
已將其替換為<div>
。
如果您可以在此處提供有關實際要實現的目標的更多詳細信息,我們可以解決。 您現在所擁有的是流星的預期行為。
如果要實現的目的是在div中顯示內容,但將/n
替換為<br>
,我相信您可以通過在模板幫助器中對data
執行regexp來實現。
放一個console.log("FIRED VALUE HELPER");
並為您的.rendered
console.log("TEMPLATE RENDERED");
做同樣的.rendered
console.log("TEMPLATE RENDERED");
該代碼將登錄到您的客戶端瀏覽器控制台。 對於chrome,我右鍵單擊瀏覽器,然后選擇檢查元素。 然后從日志陣列中選擇控制台。 您的客戶端js代碼如下所示:
Template.CasesShow.helpers({
value: function (n) {
console.log("FIRED VALUE HELPER");
Template.CaseShow.rendered = function () {
console.log("FIRED RENDERED");
如果在客戶端瀏覽器控制台中看不到日志,則未調用幫助程序/渲染函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.