使用下划线加载模板会出错

时间:2015-01-09 11:21:51

标签: javascript backbone.js requirejs underscore.js

我有一个requirejs webapp,它加载了很多库(jsfiddle加载相当复杂)。最重要的是:

console.log(_.VERSION);
_.template("<p>");

在带有开发控制台的underscorejs站点中,结果为:1.7.0,第二行返回一个函数。

加载后在我的网站

报告的版本是相同的。 第二行读取Uncaught TypeError:string不是函数

当我尝试在BackBone Views

中加载模板时,这会产生问题

堆栈跟踪:

(anonymous function)VM2739:762 InjectedScript._evaluateOnVM2739:695 InjectedScript._evaluateAndWrapVM2739:609 InjectedScript.evaluate

我没有包含下划线的库。我不确定是否重要的​​是显示requirejs如何加载_因为最终结果是加载了正确的版本..?

在撰写本文时,我花了相当多的时间来更改代码的所有部分,但没有任何效果。

我有一条消息“字符串不是函数”,我发现一些引用意味着存在某种冲突。

2 个答案:

答案 0 :(得分:0)

最可能的是,requireJS在模块中注入模板的原始字符串值,并且您认为它注入了已编译的模板函数。

您尝试将其作为功能进行访问,从而导致Uncaught TypeError: string is not a function错误。

您需要将此模板字符串提供给_.template()

答案 1 :(得分:-2)

在我用loadjs和下划线加载的所有数百个视图中,这条神秘的消息是这一行的结果

template: _.template=require("text!TemplateMapView"),

已被此行替换..

template: _.template(require("text!TemplateMapView"))

这用字符串覆盖了函数。 requirejs随机加载视图,每次不同的脚本(在此之后直接加载)都会产生错误。这非常令人困惑。