我试图使用Knockout-Validation为我的一个observable添加一个简单的正则表达式验证.
我有以下内容:
self.ContactPhone = ko.observable().extend({
required: true,
pattern: {
message: 'Invalid phone number.',
params: '^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$'
}
});
Run Code Online (Sandbox Code Playgroud)
但是,无论我输入什么,它都会返回"无效的电话号码"消息.我需要以某种方式格式化表达式吗?我使用纯JavaScript测试它,它工作正常.
我仍然相当新的淘汰赛,我试图显示和隐藏使用淘汰赛的引导标签.
基本上我有一个计算的observable:
self.isActive = ko.computed(function () {
var selected = ko.utils.arrayFirst(self.padParticipant(), function (item) {
return item.ParticipationStatus == 'Active';
});
return selected !== null ? true : false;
});
Run Code Online (Sandbox Code Playgroud)
更新这些标签:
<ul class="nav nav-tabs" id="padTabs">
<li data-bind="fadeVisible: !isActive()"><a href="#joinPad">Join PAD</a></li>
<li class="active"><a href="#history">History</a></li>
<li data-bind="fadeVisible: isActive()"><a href="#update">Update Subscription</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
计算机正常工作,因为当我刷新页面时,隐藏了正确的选项卡,但是我需要它才能正常工作而不需要刷新.
我正在开发一个需要根据某些值动态生成 HTML 的应用程序。我有以下代码,我希望动态 HTML 在其中运行:
<div data-bind="html: extraHTML"></div>
Run Code Online (Sandbox Code Playgroud)
我在我的 javascript 文件中有一个对象设置,其中包含各种 HTML 代码块,一旦应用程序启动,就会选择这些代码块。例如,对象之一包含以下内容:
{ type: 'Int', html: '<input style=\'margin: 0\'type=\'number\' min=\'0\' data-bind=\'value: selectedExtra, valueUpdate: \'input\'\' />' }
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我没有收到任何错误并且 HTML 被正确绑定,但是当我在输入字段中插入一个值时,可观察的“selectedExtra”不会更新。当我用以下内容替换包含“html”绑定的 div 标签时:
<input style="margin: 0" type="number" min="0" data-bind="value: selectedExtra, valueUpdate: 'input'">
Run Code Online (Sandbox Code Playgroud)
可观察更新就可以很好地做到这一点。我想知道的是,是否可以在“html”绑定中动态分配“值”绑定并实际更新该值。也许我错过了另一个解决方案?
任何帮助将不胜感激,谢谢!
更新
我创建了一个 jsfiddle 来演示这里的问题。