淘汰赛:如何验证对象观察

时间:2017-04-22 15:58:01

标签: javascript knockout.js knockout-validation

我绑定到一个可观察对象,如下所示:

<input data-bind="value: currentSelected().Title" type="text" placeholder="Title" class="form-control" autocomplete="off" />

我希望对象上的字段是必需的,并且下面的保存按钮不起作用,除非标题已被填写:

<button class="btn btn-default" type="button" data-bind="click: saveBlogEntries">Save</button>

这就是我设置currentSelected:

的方法
var newBlogEntry = new NewBlogEntry();
var newBlogEntryObservable = new NewBlogEntryObservable(newBlogEntry);
self.currentSelected(newBlogEntryObservable);

NewBlogEntry()函数的定义是:

function NewBlogEntry()
{
    return { "Id": 0, "Title": "", "Description": "", "Tags": [] };
}

禁用保存按钮的最佳方法是什么,或者单击时在标题字段旁边显示验证消息?

1 个答案:

答案 0 :(得分:1)

您可以在按钮上使用knockout disable绑定:

<button class="btn btn-default" type="button" data-bind="disable: currentSelected().Title() == '', click: saveBlogEntries">Save</button>

为了简化数据绑定,您可以为空标题条件设置一个计算的observable:

<button class="btn btn-default" type="button" data-bind="disable: currentSelected().HasNoTitle(), click: saveBlogEntries">Save</button>

HasNoTitle = ko.computed(function () { this.Title() == '' });

要使此绑定起作用,您需要Title属性是可观察的。

Title = ko.observable('');