我知道怎么在KO写一个服装绑定。但是,在使用durandal时,我在哪里放置代码?我使用了视图附加和激活,我也没有得到任何爱。
以下是代码
//knockout-handlers.js
define(function (require) {
ko.bindingHandlers.slideVisible = {
init: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).toggle(value);
},
update: function (element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
var duration = allBindings.slideDuration || 400;
if (valueUnwrapped == true)
$(element).slideDown(duration);
else
$(element).slideUp(duration);
}
};
ko.bindingHandlers.fadeVisible = {
init: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).toggle(value);
},
update: function (element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
var duration = allBindings.fadeDuration || 400;
if (valueUnwrapped == true)
$(element).fadeIn(duration);
else
$(element).fadeOut(duration);
}
};
});
答案 0 :(得分:3)
我将所有的Knockout扩展(例如客户绑定处理程序和扩展程序)编写为插件,我将其加载到main.js
。
插件只是需要具有install
方法的模块,这应该可以实现实际打开插件的逻辑。在这种情况下,install
方法应该将处理程序添加到ko
对象。
<强> Main.js 强>
app.configurePlugins({
//Durandal plugins
router:true,
dialog: true,
//My plugins
knockoutExtensions: true
});
我的插件
define(['knockout'], function(ko) {
var install = function() {
//You know, do stuff
};
return {
install: install
};
});
此方法仅适用于Durandal 2.0。早期版本有不同的插件API
答案 1 :(得分:0)
如果我理解您的问题,则无法使用durandal激活自定义绑定。 在渲染视图之前将其添加到任何位置。我为每个处理程序创建了模块,然后在main.js中需要它。
我有类似的问题。 资料来源:https://groups.google.com/forum/#!topic/durandaljs/NIBVLKN6v1Y