标签: bindinghandlers

具有Knockout和RequireJS的自定义绑定处理程序

在使用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)

但是,我不相信绑定会执行,除非特别调用,也许是在垫片中?有没有人对此有任何想法?

谢谢你的帮助,

requirejs knockout.js bindinghandlers

10
推荐指数
1
解决办法
4213
查看次数

Knockoutjs使用afterAdd预习自定义绑定处理程序

我想构建一个自定义的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)

knockout.js bindinghandlers

4
推荐指数
1
解决办法
4598
查看次数

如何用自定义绑定包装css knockout绑定?

我正在尝试创建一个自定义绑定,它将封装一系列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就是这个小提琴中的例子.

有没有人有更好的主意?

谢谢,温妮

knockout.js bindinghandlers

1
推荐指数
1
解决办法
911
查看次数

标签 统计

bindinghandlers ×3

knockout.js ×3

requirejs ×1