Data binding 是否可以在html输出中省略knockoutjs数据绑定属性?

Data binding 是否可以在html输出中省略knockoutjs数据绑定属性?,data-binding,knockout.js,Data Binding,Knockout.js,我有通过knockoutjs进行数据绑定的项目模板 <script id="ItemTeamplte" type="text/html"> <div>some value: <span data-bind="text: someObj.someProp"></span></div> </script> 一些价值: 输出是 <div>some value: <span data-bind="te

我有通过knockoutjs进行数据绑定的项目模板

<script id="ItemTeamplte" type="text/html">
    <div>some value: <span data-bind="text: someObj.someProp"></span></div>
</script>

一些价值:
输出是

<div>some value: <span data-bind="text: someObj.someProp">614</span></div>
某些值:614
如何省略

data bind=“text:someObj.someProp”


html输出中的属性?

否,这是不可能的,KO中没有用于执行此操作的功能。属性在那里,所以敲除可以完成它的工作


您可能会通过修改(或monkey patch)来获得一些运气,以满足您的需要,不过我也认为这可能是一件很痛苦的事情。

您可以通过扩展绑定提供程序来做到这一点。下面是一个简单的例子:

ko.bindingProvider.instance.getBindingsString = (function (originalFunc) {
    return function (node, bindingContext) {
        if (node.__savedBinding) {
            return node.__savedBinding;
        }
        var binding = originalFunc.call(this, node, bindingContext);
        if (binding && node.nodeType == 1) {
            node.__savedBinding = binding;
            node.removeAttribute('data-bind');
        }
        return binding;
    }
})(ko.bindingProvider.instance.getBindingsString);

Fiddle:

AFAIK没有办法删除属性,但是为什么要这样做呢?这些属性存在什么问题?同时,您可以检查Knockout.punchs Knockout在运行时对呈现的HTML进行操作。如果删除它在呈现的输出中查找的代码,它将不起作用。@nemesv原因是不披露数据模型结构即使您设法删除了客户端的绑定,它们仍然与初始服务器请求一起呈现到DOM中。因此,这是毫无意义的。此外,可以从一个简单的应用程序中推断出实际的数据模型,该应用程序在服务器上呈现的html与从数据绑定属性中呈现的html一样好!嗯,@MichaelBest的答案在某种程度上与我的答案相同,只是他实际上展示了如何修改源代码(通过猴子补丁)。我仍然会说,如果你需要使用猴子补丁,那么经常使用图书馆会认为这是“不可能的”。我可以问一下,你从哪里得到的?还是你自己做的?只是想知道你是怎么找到这个解决方案的,它有多可靠。回答得好!但需要注意的是,这样做是猴子修补敲除本身,而不是利用真正的敲除功能来做这件事。@Alvaro Michael是敲除库的一员,我想公平地说,他可能是自己写的,而且可能相当可靠(至少在当前版本的敲除中):)@JamesThorpe感谢您的澄清:)我不知道。自定义绑定提供程序是一个很好的解决方案。但是,
getBindingsString
函数是内部函数,仅适用于标准绑定提供程序。