Javascript 在XHTML中限定KnockOutJS属性(通过XML名称空间)
我希望能够限定XHTML文档中的KnockOutJS属性 以下是我想做的:Javascript 在XHTML中限定KnockOutJS属性(通过XML名称空间),javascript,knockout.js,xml-namespaces,Javascript,Knockout.js,Xml Namespaces,我希望能够限定XHTML文档中的KnockOutJS属性 以下是我想做的: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:ko="http://knockoutjs.com"> <!-- Supply the KnockOutJS namespace here --> <head> <script
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:ko="http://knockoutjs.com"> <!-- Supply the KnockOutJS namespace here -->
<head>
<script th:src="@{/js/lib/knockout-2.2.1.js}" src="../../js/lib/knockout-2.2.1.js"></script>
<!-- Remainder omitted... -->
</head>
<body>
<p>
My name is:
<span ko:data-bind="text: name"></span><!-- Problem line - KnockOut will ignore data-bind when it's qualified -->
</p>
</body>
</html>
我的名字是:
上面的示例不起作用,因为KnockOutJS忽略了限定的ko:data bind
。显然,如果我删除ko:
,它就会工作
请问,有没有办法告诉KnockOutJS它是合格的,合格的是什么
我想要限定KnockOutJS属性的原因是:
谢谢 根据knockoutjs支持论坛,这是不受支持的,预计将来也不会支持
根据knockoutjs支持论坛,这是不受支持的,预计将来也不会支持
Knockout支持自定义绑定提供程序,可用于根据需要检索绑定。这一点目前还没有正式记录,但确实存在 下面是一个绑定提供程序,它扩展了内置提供程序以添加对
ko:data bind
的支持
var originalNodeHasBindings = ko.bindingProvider.instance.nodeHasBindings;
var originalGetBindings = ko.bindingProvider.instance.getBindings;
ko.utils.extend(ko.bindingProvider.instance, {
nodeHasBindings: function(node) {
if (node.nodeType == 1 && node.hasAttribute('ko:data-bind'))
return true;
return originalNodeHasBindings.call(this, node);
},
getBindings: function(node, bindingContext) {
if (node.nodeType == 1 && node.hasAttribute('ko:data-bind'))
return this.parseBindingsString(node.getAttribute('ko:data-bind'), bindingContext, node);
return originalGetBindings.call(this, node, bindingContext);
}
});
用法示例:Knockout支持自定义绑定提供程序,可用于按需检索绑定。这一点目前还没有正式记录,但确实存在 下面是一个绑定提供程序,它扩展了内置提供程序以添加对
ko:data bind
的支持
var originalNodeHasBindings = ko.bindingProvider.instance.nodeHasBindings;
var originalGetBindings = ko.bindingProvider.instance.getBindings;
ko.utils.extend(ko.bindingProvider.instance, {
nodeHasBindings: function(node) {
if (node.nodeType == 1 && node.hasAttribute('ko:data-bind'))
return true;
return originalNodeHasBindings.call(this, node);
},
getBindings: function(node, bindingContext) {
if (node.nodeType == 1 && node.hasAttribute('ko:data-bind'))
return this.parseBindingsString(node.getAttribute('ko:data-bind'), bindingContext, node);
return originalGetBindings.call(this, node, bindingContext);
}
});
用法示例:这不是我所希望的答案,不过还是要谢谢你!(我发誓我已经在谷歌上搜索了大约一个小时,寻找这个……好链接!)这是一篇老文章。Knockout现在支持自定义绑定提供程序,可用于以任何方式检索绑定。@MichaelBest未看到任何相关文档。我知道自定义绑定,但它们仍然使用数据绑定。你能说明你的意思吗?如果你有什么事,我一定会把票投给你answer@ben336把被接受的答案从你身上转移到迈克尔·贝斯特身上。希望你不介意!这不是我想要的答案,不过还是要谢谢你!(我发誓我已经在谷歌上搜索了大约一个小时,寻找这个……好链接!)这是一篇老文章。Knockout现在支持自定义绑定提供程序,可用于以任何方式检索绑定。@MichaelBest未看到任何相关文档。我知道自定义绑定,但它们仍然使用数据绑定。你能说明你的意思吗?如果你有什么事,我一定会把票投给你answer@ben336把被接受的答案从你身上转移到迈克尔·贝斯特身上。希望你不介意!FWIW,我更改并更新了我的HTML文件,使它们不使用Thymelead/XHTML DOCTYPE,而是使用HTML5 DOCTYPE:
。现在一切都很顺利(除了淘汰是不合格的!)。FWIW,我更新了我的HTML文件,使它们不使用Thymelead/XHTML DOCTYPE,而是使用HTML5 DOCTYPE:
。现在一切都很顺利(除了淘汰赛不合格!)。