【发布时间】:2013-09-21 16:06:47
【问题描述】:
我有一个页面列出了多个项目,这些项目是可观察数组中的轻量级实体。使用 foreach 循环,我希望标签的 CSS 根据项目的状态而变化。
因为我使用的是轻风,所以我定义了var projects = ko.observableArray();,而轻风负责其余的工作,包括来自相关实体 (projectStatus) 的值。
对于我要设置样式的元素,它存在于foreach: projects 列表中,并具有data-bind="text: projectStatus().name 的绑定。这完美地工作。但是,当我在视图模型中为 CSS 值编写计算出的 observable 时,它会在第 3 行(如下)引发未定义的错误。否则(我已经检查过)如果函数返回有效字符串,则该函数适用于 CSS:
projectStatusStyle = ko.computed(function () {
var x = "left label label-large label-info";
var projStatus = projects().projectStatus().name();
var style = "left label label-large label-"
switch (projStatus) {
case 'Live':
x = style + "success";
break;
case 'Identified':
x = style + "info";
break;
case 'In conversation':
x = style + "purple";
break;
case 'Complete':
x = style + "grey";
break;
case 'Unsuccessful':
x = style + "yellow";
break;
}
return x;
},vm);
所以我的问题是,我应该如何引用 projects().projectStatus().name();可观察值?
谢谢
【问题讨论】:
-
请显示项目和项目状态
-
第二个@PWKad,您需要显示更多代码。设身处地为我们着想,仅凭您提供的代码我们无法重现该问题。
-
点@Jeroen。我最好将其表述为一个问题:是否可以以引用当前 observable 的方式使用淘汰赛动态 css 绑定。我知道你不能将参数传递给计算函数,所以也许自定义绑定处理程序是一个选项,你可以在 valueaccessor 处获得?
标签: knockout.js breeze