2015-04-23 62 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

相关问题