簡體   English   中英

流星助手已經運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM