我正在尝试在主干上使用require.js和bootstrap组件在页面上放置一个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 Dev Tool控制台下方:
答案 0 :(得分:3)
基于github.com/hakimel/Ladda/pull/7,我将spin.js重写为像Ladda这样的类。我使用define而不是require(http://bardevblog.wordpress.com/2013/01/05/re-learning-backbone-js-require-js-and-amd/)。 现在微调器也是一个对象。
Ladda.bind()
似乎不起作用(或者我不明白会发生什么)。您可以创建一个新的按钮对象:Ladda.create()
;
请参阅:http://plnkr.co/edit/DuIVFP0UP8sSoek9gEZc
//https://github.com/requirejs/example-jquery-cdn
requirejs.config({
//"baseUrl": "js/lib",
enforceDefine: true,
"paths": {
"app": "app",
"jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
"spin": "spin",
"ladda": "ladda"
},
shim: {
"spin": {exports: "Spinner"},
"ladda": {
depends: "spin",
exports: "Ladda"
},
}
});
// Load the main app module to start the app
requirejs(["app/main"]);
应用/ main.js 强>:
define(["jquery",'ladda','spin'], function($,ladda) {
//the jquery.alpha.js and jquery.beta.js plugins have been loaded.
$(function() {
console.log("$: " + typeof $);
console.log("ladda: " + typeof Ladda);
console.log("spin: " + typeof Spinner);
Ladda.bind($('button')[0]); //don't work ????????????
//return;
//Ladda.create('.ladda-button');
var l = Ladda.create($('button')[1]);
l.start();
// Will display a progress bar for 50% of the button width
l.setProgress( 5 );
// Stop loading
l.stop();
// Toggle between loading/not loading states
l.toggle();
// Check the current state
l.isLoading();
});
});
答案 1 :(得分:0)
不应该使用ladda
小写l
。因为这是require函数中参数的名称。
ladda.create ($('button'));