Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绑定后删除数据绑定属性_Javascript_Knockout.js - Fatal编程技术网

Javascript 绑定后删除数据绑定属性

Javascript 绑定后删除数据绑定属性,javascript,knockout.js,Javascript,Knockout.js,我在一个项目中使用了很多东西。 除此之外,它还用于动态地为第三方工具构建XML配置,这需要非常具体、严格的标记 这意味着,所有生成的标记都需要没有任何数据绑定属性 目前,我可以通过附加绑定来实现这一点 <Element data-bind="attr: {'data-bind': false}" /> 或者在整个结果标记上执行单独的附加循环,删除所有数据绑定属性 这两种解决方案都不太简单,第一种解决方案意味着非常详细的模板,第二种解决方案需要对整个结果进行额外的传递 在应用绑定

我在一个项目中使用了很多东西。
除此之外,它还用于动态地为第三方工具构建XML配置,这需要非常具体、严格的标记

这意味着,所有生成的标记都需要没有任何
数据绑定
属性

目前,我可以通过附加绑定来实现这一点

<Element data-bind="attr: {'data-bind': false}" />

或者在整个结果标记上执行单独的附加循环,删除所有
数据绑定
属性

这两种解决方案都不太简单,第一种解决方案意味着非常详细的模板,第二种解决方案需要对整个结果进行额外的传递

在应用绑定后,敲除是否提供了一种更好的方法来删除所有
数据绑定
属性?

可能会有帮助:

通过提供一个节点预处理器,您可以钩住Knockout的逻辑来遍历DOM。这是一个函数,Knockout将为它遍历的每个DOM节点调用一次,无论是在第一次绑定UI时,还是稍后在注入任何新的DOM子树时(例如,通过foreach绑定)

以下操作将删除数据绑定属性:

ko.bindingProvider.instance.preprocessNode = function(node) {
    if (node.removeAttribute) {
        setTimeout(function() {
            node.removeAttribute('data-bind');
        }, 0);
    }
};

setTimeout
是必需的,因为knockout在调用
prepreprocessnode
后将读取
data bind
属性,可能会有帮助:

通过提供一个节点预处理器,您可以钩住Knockout的逻辑来遍历DOM。这是一个函数,Knockout将为它遍历的每个DOM节点调用一次,无论是在第一次绑定UI时,还是稍后在注入任何新的DOM子树时(例如,通过foreach绑定)

以下操作将删除数据绑定属性:

ko.bindingProvider.instance.preprocessNode = function(node) {
    if (node.removeAttribute) {
        setTimeout(function() {
            node.removeAttribute('data-bind');
        }, 0);
    }
};


setTimeout
是必需的,因为knockout在调用
prepreprocessnode
后将读取
data bind
属性。您可以使用JQuery并使用.removeAttr()@Robert感谢您的输入,但这与我提供的第二个选项相同,只有我没有特别标记问题的库增加了开销。您可以使用JQuery并使用.removeAttr()@Robert谢谢您的输入,但这与我提供的第二个选项相同,只是我没有特别标记问题的库增加了开销。