我试图向bootstrap-datepicker添加一个自定义的淘汰赛绑定,并在模仿那个之前进入this question的解决方案而没有将它放入javascript asp包中我尝试添加引导程序以这种方式-datepicker.js到requirejs配置
requirejs.config({
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins',
'transitions': '../Scripts/durandal/transitions',
'bootstrap.datepicker': '../Scripts/bootstrap-datepicker'
}
});
define('jquery', function () { return jQuery; });
define('knockout', ko);
之后,我可以在模块中添加自定义绑定,只需引用bootstrap.datepicker,就像这样
define(['jquery', 'bootstrap.datepicker'], function () {
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
//initialize datepicker with some optional options
var options = allBindingsAccessor().datepickerOptions || {};
$(element).datepicker(options).on("changeDate", function (ev) {
var observable = valueAccessor();
observable(ev.date);
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).datepicker("setValue", value);
}
};
});
我迷失了为什么我不需要将它包装在amd模块中(如jquery或knockout所做的那样)或者在index.cshtml js包中,所以我的问题是什么时候需要一个垫片?我可以将其关注到其他图书馆吗?
由于
答案 0 :(得分:1)
如果这对您有用,那么 bootstrap.datepicker 实际上是支持 AMD。对于那些直接支持AMD的库,在大多数情况下指定该库的路径然后在其他地方需要它就足够了。
当这些库具有自己的依赖关系(可能支持或不支持AMD)时,可能会出现并发症。这可能需要使用RequireJS的一些更深奥的功能。
当库没有返回RequireJS可以使用的对象时,使用填充程序。所以,我们必须 shim 或者鞋拔,把对象带到Require的空间。