使用afterAdd的Knockoutjs foreach自定义绑定处理程序

用户1199595

我想建立一个自定义的bindingHandler

ko.bindingHandlers.foreachWithHighlight在afterAdd时具有突出显示效果。

来自文档

yellowFadeIn: function(element, index, data) {
        $(element).filter("li")
                  .animate({ backgroundColor: 'yellow' }, 200)
                  .animate({ backgroundColor: 'white' }, 800);
    },

但我想始终将此添加到我的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);
            }
        };
    };
    return ko.bindingHandlers.foreach.update(element, newValue, allBindingsAccessor, viewModel, context);
}};

添加服务器中的所有节点后,如何防止它第一次运行。我只希望它在添加新节点时运行。

RP尼迈耶

如果我正确地理解了您的情况,那么问题就在于您在填充observableArray的初始时间(绑定之后)会看到突出显示的内容。处理此类情况的一种方法是使用ko.utils.domData$.data在元素上放置一个标志,以指示该元素现在已准备好突出显示效果。

就像是:

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()),
            key = "forEachWithHightlight_initialized";

        var newValue = function () {
            return {
                data: value,
                afterAdd: function (el, index, data) {
                    if (ko.utils.domData.get(element, key)) {
                        $(el).filter("li")
                            .animate({
                            backgroundColor: 'yellow'
                        }, 200)
                            .animate({
                            backgroundColor: 'white'
                        }, 800);
                   }
                }
            };
        };

        ko.bindingHandlers.foreach.update(element, newValue, allBindingsAccessor, viewModel, context);

        //if we have not previously marked this as initialized and there are currently items in the array, then cache on the element that it has been initialized
        if (!ko.utils.domData.get(element, key) && value.length) {
            ko.utils.domData.set(element, key, true);
        }

        return { controlsDescendantBindings: true };
    }
};

在这里提琴:http : //jsfiddle.net/rniemeyer/zGJX3/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用基因敲除.js的自定义绑定处理程序中的显式设置值绑定处理程序

来自分类Dev

在自定义绑定处理程序中使用不可观察的对象

来自分类Dev

在自定义绑定处理程序中使用不可观察的对象

来自分类Dev

Workbox - 使用自定义处理程序

来自分类Dev

使用自定义绑定KnockoutJS更新ViewModel

来自分类Dev

如何使用自定义绑定来对在Knockout.js中使用“ foreach”添加的元素进行动画处理

来自分类Dev

SwiftUI自定义列表无法在ForEach中使用绑定

来自分类Dev

自定义 Href 数据绑定 KnockoutJs

来自分类Dev

鼻子1.3.4并使用自定义处理程序进行记录

来自分类Dev

使用自定义事件对象触发事件处理程序

来自分类Dev

如何使用图像自定义滑块处理程序

来自分类Dev

使用完成处理程序实现自定义 func

来自分类Dev

使用KnockoutJS的“自定义样式”复选框不响应“检查”数据绑定

来自分类Dev

如何在Yesod路由处理程序中使用自定义错误处理程序?

来自分类Dev

Bootstrap DateTimePicker + KnockoutJS自定义绑定:无法清除字段

来自分类Dev

KnockoutJS:如何观察到自定义绑定?

来自分类Dev

如何使用 Knockout.js 自定义绑定处理文本字段的内容?

来自分类Dev

使用ObservableCollection的自定义控件绑定

来自分类Dev

使用ObservableCollection的自定义控件绑定

来自分类Dev

使用CEFPython为Chromium嵌入式框架定义自定义方案处理程序

来自分类Dev

使用CEFPython为Chromium嵌入式框架定义自定义方案处理程序

来自分类Dev

使用PyInstaller自定义日志记录处理程序和格式化程序

来自分类Dev

如何使用自定义JMS序列化程序处理程序设置Nelmio Doc

来自分类Dev

使用knockoutjs禁用绑定

来自分类Dev

如何使用Promise将应用程序的视图模型绑定到自定义元素?

来自分类Dev

使用RequireJS淘汰掉自定义引导程序绑定错误

来自分类Dev

使用jQueryUI对话框的Knockoutjs自定义bindig

来自分类Dev

使用自定义消息处理错误?

来自分类Dev

使用foreach yii2的自定义数据提供程序

Related 相关文章

  1. 1

    使用基因敲除.js的自定义绑定处理程序中的显式设置值绑定处理程序

  2. 2

    在自定义绑定处理程序中使用不可观察的对象

  3. 3

    在自定义绑定处理程序中使用不可观察的对象

  4. 4

    Workbox - 使用自定义处理程序

  5. 5

    使用自定义绑定KnockoutJS更新ViewModel

  6. 6

    如何使用自定义绑定来对在Knockout.js中使用“ foreach”添加的元素进行动画处理

  7. 7

    SwiftUI自定义列表无法在ForEach中使用绑定

  8. 8

    自定义 Href 数据绑定 KnockoutJs

  9. 9

    鼻子1.3.4并使用自定义处理程序进行记录

  10. 10

    使用自定义事件对象触发事件处理程序

  11. 11

    如何使用图像自定义滑块处理程序

  12. 12

    使用完成处理程序实现自定义 func

  13. 13

    使用KnockoutJS的“自定义样式”复选框不响应“检查”数据绑定

  14. 14

    如何在Yesod路由处理程序中使用自定义错误处理程序?

  15. 15

    Bootstrap DateTimePicker + KnockoutJS自定义绑定:无法清除字段

  16. 16

    KnockoutJS:如何观察到自定义绑定?

  17. 17

    如何使用 Knockout.js 自定义绑定处理文本字段的内容?

  18. 18

    使用ObservableCollection的自定义控件绑定

  19. 19

    使用ObservableCollection的自定义控件绑定

  20. 20

    使用CEFPython为Chromium嵌入式框架定义自定义方案处理程序

  21. 21

    使用CEFPython为Chromium嵌入式框架定义自定义方案处理程序

  22. 22

    使用PyInstaller自定义日志记录处理程序和格式化程序

  23. 23

    如何使用自定义JMS序列化程序处理程序设置Nelmio Doc

  24. 24

    使用knockoutjs禁用绑定

  25. 25

    如何使用Promise将应用程序的视图模型绑定到自定义元素?

  26. 26

    使用RequireJS淘汰掉自定义引导程序绑定错误

  27. 27

    使用jQueryUI对话框的Knockoutjs自定义bindig

  28. 28

    使用自定义消息处理错误?

  29. 29

    使用foreach yii2的自定义数据提供程序

热门标签

归档