2014-10-29 84 views
0

我如何檢查所有流星傭工已經運行?流星幫手已經運行

當我使用此代碼時,我得到一個新的空白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運行幫助者?

+0

textarea變量名稱之前的$符號是做什麼的? – 2014-10-29 16:23:52

+1

告訴我這是一個jQuery對象。想法來自這裏:https://github.com/airbnb/javascript#jquery – zimt28 2014-10-29 16:27:00

+0

你可以發佈你正在使用的模板的HTML。我相信'helper'會在'rendered'後面運行,因爲渲染只關心模板中的基本HTML。對我來說,在你的'rendered'中注入html是很奇怪的。 – Shaded 2014-10-29 19:05:53

回答

0

Template.rendered = func將在您的模板助手之前運行一次(並且在您的路由提供數據之前很久)。你的模板不能工作,當你有Template.rendered函數,因爲在你的渲染函數中,你用div替換你的textarea,並且在助手中,你返回的值已經不再存在於textarea上了(因爲Template.CaseShow.rendered已經用<div>

如果你能提供什麼你實際上是想在這裏實現更多的細節,我們可以解決什麼你現在打算流星的行爲。

如果你想達到什麼在div中顯示你的內容,但在用<br>代替/n之後,我相信你可以通過在你的data的模板助手中執行該正則表達式。

0

放一個console.log("FIRED VALUE HELPER");併爲您做相同.renderedconsole.log("TEMPLATE RENDERED");該代碼將登錄到您的客戶端瀏覽器控制檯。對於Chrome我右鍵單擊瀏覽器並選擇檢查元素。然後從日誌數組中選擇控制檯。您的客戶端的js代碼應該是這樣的:

Template.CasesShow.helpers({ 
    value: function (n) { 
     console.log("FIRED VALUE HELPER"); 


Template.CaseShow.rendered = function() { 
    console.log("FIRED RENDERED"); 

如果你沒有看到在日誌中的客戶端瀏覽器控制檯,幫手/渲染功能沒有被調用。