boi*_*ice 3 javascript jsfiddle handlebars.js
这是我正在尝试的代码:http
://jsfiddle.net/sbrsK/10/
它正确运行jsfiddle没有任何错误
尝试在我的计算机上本地通过Web服务器运行相同的功能是行不通的.正在加载以下文件:
在Firefox中我收到此错误:
TypeError: this._input is null @ http://cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js:364
Run Code Online (Sandbox Code Playgroud)
在chrome中我收到此错误:
Uncaught TypeError:Cannot call method 'match' of null
under match = this._input.match(this.rules[rules[i]]); in handlebars-1.0.0.beta.6.js
Run Code Online (Sandbox Code Playgroud)
这个链接早先提出了一个非常类似的问题,但似乎它仍然是开放的.
所以问题是为什么当它在jsfiddle中正常工作时会发生这个错误?在本地运行此命令的正确方法是什么?
该错误意味着#entry-template当您尝试使用它时不在DOM中:
var source = $("#entry-template").html(); // There is no #entry-template in the DOM here
var template = Handlebars.compile(source);
Run Code Online (Sandbox Code Playgroud)
这意味着您最终尝试编译undefined为Handlebars模板,但这不起作用.您可以通过运行以下命令查看错误:
打开你的控制台.
jsfiddle的工作原理是因为你在加载DOM后运行了所有代码,这是默认的jsfiddle行为.
您可能在实际代码中遇到加载顺序问题,请尝试将其包装在$(function() { /*...*/ })包装器中.