在使用requireJS的knockout时,我遇到了应用自定义绑定处理程序的问题.基本上,在过去,我已经包含了一个包含所有自定义绑定的全局绑定处理程序js文件.现在我正在使用requireJS来强制执行依赖项,我不确定如何访问这些自定义绑定.
我以前用它来创建全局函数
function KOCustomBindings() {
// Custom Bindings
ko.bindingHandlers.returnKey = {
//handler code
}
}
Run Code Online (Sandbox Code Playgroud)
既然我正在使用require,我觉得我应该有一个define语句
define(['jquery', 'knockout'],
function($, ko)){
// Custom Bindings
return KOCustomBindings;
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我不相信绑定会执行,除非特别调用,也许是在垫片中?有没有人对此有任何想法?
谢谢你的帮助,
我想构建一个自定义的bindingHandler
ko.bindingHandlers.foreachWithHighlight在afterAdd时具有高亮效果.
yellowFadeIn: function(element, index, data) {
$(element).filter("li")
.animate({ backgroundColor: 'yellow' }, 200)
.animate({ backgroundColor: 'white' }, 800);
},
Run Code Online (Sandbox Code Playgroud)
但是我想总是将它添加到我的valueAccessor并将其传递给foreach绑定.
ko.bindingHandlers.foreachWithHighlight = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {
return ko.bindingHandlers.foreach.init(element, valueAccessor, allBindingsAccessor, viewModel, context);
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {
var value = ko.unwrap(valueAccessor());
var newValue = function () {
return {
data: value,
afterAdd: function(element, index, data) {
$(element).filter("li")
.animate({ backgroundColor: 'yellow' }, 200)
.animate({ backgroundColor: 'white' }, 800);
}
};
}; …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个自定义绑定,它将封装一系列css绑定.具体而言,而不是:
data-bind="css: { success: PickInventoryViewModel.ajaxSuccess, fail: PickInventoryViewModel.ajaxFailure, working: PickInventoryViewModel.ajaxWorking }"
Run Code Online (Sandbox Code Playgroud)
我要这个:
data-bind="ajaxStatus: PickInventoryViewModel"
Run Code Online (Sandbox Code Playgroud)
的ajaxStatus结合将是一个自定义绑定这将启动相应的CSS绑定,而不是在我的应用程序洒此实现细节.但是,cssbindingHandler没有init函数,所以我不完全确定如何使这个工作.
我想我可以订阅每个observable并ko.bindingHandlers['css'].update在观察到的值时调用true.我考虑的另一个可能的选择是将css绑定注入到html元素并重新绑定节点(我认为这applyBindingsToNode就是这个小提琴中的例子.
有没有人有更好的主意?
谢谢,温妮