在Knockout中是或否而不是真或假

时间:2015-05-29 06:49:36

标签: javascript knockout.js binding boolean

在Knockout中,有一种干净的方式可以从我的视图模型中显示一个布尔属性来显示'是'或者'否'而不是真/假。有时属性是未定义的,所以这也应该显示No。

目前正在使用:

<td data-bind="text: isAvailable ? 'Yes' : 'No'"></td>

一定是更好的方式。

2 个答案:

答案 0 :(得分:8)

您可以使用此自定义bindingHandler,

ko.bindingHandlers.YesNo = {
    update: function (element, valueAccessor) {
        // defaults to false
        var val = ko.utils.unwrapObservable(valueAccessor()) || false; 

        if (val)
            $(element).text("Yes");
        else
            $(element).text("No");
    }
}

像这样使用,

<td data-bind="YesNo: isAvailable"></td>

由于

答案 1 :(得分:2)

如果您将isTomorrow(this.triggeringElement) 定义为observable,则可以通过以下方式轻松实现:

JSFIDDLE

<强>视图模型

isAvailable

查看

var viewModel = function()
{
   var self = this;

   self.isAvailable = ko.observable(false);
};

p / s:在处理可观察值时不要忘记<td data-bind="text: $root.isAvailable() ? 'Yes' : 'No'"></td>