9

我的页面上有一个 viewModel,其中包含用于概述某些设备当前状态的数据。到目前为止,除了一个问题外,一切都很好:我需要根据 viewModel 中的另一个值设置 div 元素的 title 属性。

我知道您基本上可以像这样设置标题属性(在 div 标签的 data-bind 属性内):

attr: { title: 'Some title' }

使用上面的语句,当悬停 div 时,“某些标题”被设置为工具提示。我也可以这样设置:

attr: { title: ConnectState.Value() }

它输出我当前 viewModel 数据的正确值(整数值),因此 viewModel 被正确填充。

现在我需要将其更改为类似的内容:

attr: {
  title: {
    'Text 1': ConnectState.Value() == 0,
    'Text 2': ConnectState.Value() == 1,
    'Text 3': ConnectState.Value() == 2,
    'Text 4': ConnectState.Value() == 3
  }
}

上面的例子只会给出“[object Object]”作为标题(分别作为工具提示)。我该如何解决?提前非常感谢!

4

2 回答 2

11

在您的视图模型中定义一个 ko.computed。

self.ConnectTitle = ko.computed(function() {
   return 'Text ' + (self.ConnectState.Value() + 1).toString();
});

然后:-

attr: { title: ConnectTitle }

作为你的绑定。如果您的文本只是一个简单的示例,您可以用适合您需要的内容替换计算函数的内容。

于 2013-06-18T14:07:40.667 回答
4

您可以使用三元运算符,如下所示:

attr: { 
  title: ConnectState.Value() == 0 ? 'Text 1' :
         ConnectState.Value() == 1 ? 'Text 2' :
         ConnectState.Value() == 2 ? 'Text 3' :
         'Text 4'
}
于 2015-03-11T20:26:27.027 回答