如果不是null,则使用knockout.js绑定连接两列

时间:2014-08-11 11:40:36

标签: knockout.js knockout-mvc

我在MVC razor项目中使用Knockout.js将表列与FirstName和LastName绑定

<td><label class='required' data-bind="text: FirstName + ' ' + LastName" /><td/>

它连接但当一个字段为空时,它将在输出中显示null。

像:

乔·史密斯 Null Smith Jone Null Null Null

如何删除此null?

3 个答案:

答案 0 :(得分:0)

您可以使用计算属性:

viewmodel.FullName = ko.computed(function(){
     if (viewmodel.FirstName && viewmodel.LastName)
          return viewmodel.FirstName + ' ' + viewmodel.LastName
     else if(viewmodel.FirstName)
          return viewmodel.FirstName;
     else if (viewmodel.LastName)
          return viewmodel.LastName;  
     else
          return '';
});

然后像这样更新你的绑定:

<td><label class='required' data-bind="text: FullName" /><td/>

答案 1 :(得分:0)

我要说检查字符串中是否有值:就像这样 if(FirstName)FirstName.length > 0 如果是这样,你可以设置FirstName = '';

答案 2 :(得分:0)

使用比Kenneths更少的if else案例进行计算,并且可以重复使用

function joinComputed() {
    var parts = arguments;
    return ko.computed(function() {        
        return ko.utils.arrayFilter(ko.utils.arrayMap(parts, function(part) {
            return ko.unwrap(part)
        }), function(part) {
            return part;
        }).join(" ");
    })
}

http://jsfiddle.net/6yLrjc5y/