我有fiddle。我想要做的就是将嵌套在每个对象文字中的值转换为字符串。
<ul data-bind="foreach: people">
<li>
<span data-bind="text: Name"> </span>
<span data-bind="text:Id"></span>
</li>
</ul>
function AppViewModel()
{
var self = this;
self.people = ko.observableArray([{"Name":"RobbStark",Id:1}, {"Name":"JohnSnow",Id:2}]);
}
ko.applyBindings(new AppViewModel());
我想使用查找 喜欢
var valueMap={
1:"SanJose",
2:"San Francisco"
}
获得类似
的输出RobbStark SanJose
JohnSnow San Francisco.
如何将observable转换为foreach中的其他值?
答案 0 :(得分:2)
您所要做的就是从文本数据绑定中调用javascript函数,将每个循环中的当前项($ data)作为参数传入。示例fiddle
<强>使用Javascript:强>
var valueMap={
1:"SanJose",
2:"San Francisco"
}
function AppViewModel()
{
var self = this;
self.people = ko.observableArray([{"Name":"RobbStark",Id:1}, {"Name":"JohnSnow",Id:2}]);
self.parsedName = function (item) {
return item.Name + " " + valueMap[item.Id];
};
}
ko.applyBindings(new AppViewModel());
<强> HTML 强>
<ul data-bind="foreach: people">
<li>
<span data-bind="text: $root.parsedName($data)"> </span>
</li>
</ul>
KnockoutJS documentation下的#1包含有关$ data的更多信息。