2015-04-23 56 views
1

我有最新版本的流星......流星 - onRendered不是一個函數

meteor --version 
Meteor 1.1.0.2 

這是the documentation說...

Template.codeSample.onRendered(function() { 
    hljs.highlightBlock(this.findAll('pre')); 
}); 

這是我的js代碼...

if (Meteor.isClient) { 
    Template.virtuebox.onRendered(function() { 
    console.log("hi") 
    }); 
} 

這是我的模板...

<template name="virtuebox">  
     <div class="box"> 
     <span>{{text}}</span> 
     <input type="number" value="0.5" step="0.1" min="0" max="1" name={{text}} /> 
     </div> 
</template> 

這是方法列表...

enter image description here

這是錯誤...

simple-todos.js:34 Uncaught TypeError: Template.virtuebox.onRendered is not a function 

我在做什麼錯?

回答

1

這很奇怪......我真的很想知道你是否在你的系統上沒有很好的火焰。

真的,新

Template.foo(onRendered(function(){})); 

機制是有道理的,因爲它提供了多種回調,而不是舊

Template.foo.rendered = function(){}; 

只給了你一個 - 但是這不會引起你的問題。

缺少Template.prototype的某些可見部分(即onCreated,onRendered,onDestroyed和_getCallbacks函數和_callbacks對象)使我認爲系統上的packages/blaze/template.js已被破壞。

你可以嘗試看是否舊Template.foo.rendered的作品,雖然_getCallbacks功能的代碼文件指出

// Fire all callbacks added with the new API (Template.onRendered()) 
// as well as the old-style callback (e.g. Template.rendered) for 
// backwards-compatibility. 

我看不出這將是更好;目前還不清楚你的系統上有什麼。

如果不這樣做,我會嘗試從您的系統中刪除流星,並重新安裝它新鮮。如果你的系統上的流星源遭到破壞,重新安裝應該修復它。

+0

'Template.foo.rendered = function(){}'正在工作,感謝您的建議。我正在使用流星的最新版本,所以我會盡力去做到這一點。 – Duopixel

相關問題