【发布时间】:2013-06-10 16:02:17
【问题描述】:
我正在尝试在使用 require.js 以及引导组件的主干呈现的页面上放置一个 ladda 按钮。但是,我得到了
"Uncaught ReferenceError: Spinner is not defined".
我从原来的 ladda.js 中剪下缩小后的 spin.js 并将它们放在同一个目录中。
Shim'ed ladda 如下:
require.config ({
paths: {
//jquery, underscore, backbone here
spin : 'libs/ladda/spin',
ladda: 'libs/ladda/ladda'
},
shim: {
ladda: {
deps: ['spin'],
exports: 'Ladda'
}
}
});
在主干视图中:
define([
'jquery',
'underscore',
'backbone',
'bootstrap',
'spin',
'ladda',
], function($, _, Backbone, Bootstrap, Spinner, ladda){
render: function () {
//templating
console.log ('Spinner: ' + typeof Spinner);
Ladda.create ($('button'));
}
});
我可以看到typeof Spinner 是一个函数。 Spinner.name 属性为“p”。 Spinner.name 不应该是“Spinner”而不是“p”吗?还是“p”继承自缩小变量?
为了让 Spinner 在 ladda.js 的范围内可见,我错过了哪些其他步骤?欣赏任何建议。
谢谢。
更新:
感谢 Bass Jobsen 的建议,使用 hakimel 提交 spin.js, Spinner 已加载但错误仍然存在。在 Chrome 开发工具控制台下方:
【问题讨论】:
-
ladda.js 调用 var spinner = new Spinner;所以 spinner 应该是一个对象?当我将微调器重写为 window.Spinner =(function() { "use strict"; ......(跳过第一个包装器)。微调器仍然是一个对象,但错误将是` spinner.spin is not a function `. 注意我使用define代替require,另见;bardevblog.wordpress.com/2013/01/05/…
标签: twitter-bootstrap backbone.js requirejs spin.js