Javascript 淘汰字符串格式模式
在WPF中有一个我经常使用的绑定Javascript 淘汰字符串格式模式,javascript,knockout.js,binding,custom-binding,Javascript,Knockout.js,Binding,Custom Binding,在WPF中有一个我经常使用的绑定 <GridViewColumn DisplayMemberBinding="{Binding Path=Price, StringFormat=Now {0:c}!}"/> 其中1是产品组,2是产品的id,因为您希望格式化显示值(ui)并跟踪其更改,因此调用sprintf库的自定义绑定是最合适的解决方案,它还提供了可重用性,例如: ko.bindingHandlers.sprintf = { update: function(element
<GridViewColumn DisplayMemberBinding="{Binding Path=Price, StringFormat=Now {0:c}!}"/>
其中1是产品组,2是产品的id,因为您希望格式化显示值(ui)并跟踪其更改,因此调用sprintf库的自定义绑定是最合适的解决方案,它还提供了可重用性,例如:
ko.bindingHandlers.sprintf = {
update: function(element, valueAccessor) {
var options = valueAccessor();
var formatted = sprintf(ko.unwrap(options.format),
ko.unwrap(options.args).map(function(arg) {
return ko.unwrap(arg);
});
if(options.attr) {
element.setAttribute(options.attr, formatted);
} else {
element.textContent = formatted;
}
}
}
其中,此自定义绑定需要具有以下属性的配置对象:
:要更新的属性(如果要更新元素的文本内容,则为null)attr
:字符串格式格式
:格式化argsargs
<a data-bind="sprintf: { attr:'href',
format:'#products/%0/product/%1',
args: [val1, val2] }">
click
</a>
// val1 & val2 are ko observables
演示:这可能很有用:太棒了,找到我想要的东西:)
<a data-bind="sprintf: { attr:'href',
format:'#products/%0/product/%1',
args: [val1, val2] }">
click
</a>
// val1 & val2 are ko observables
<a data-bind="attr: { href: sprintf('#products/%0/product/%1',
[val1(), val2()])
}">
click
</a>