将数据绑定值转换为foreach knockout中的字符串

时间:2014-08-30 04:07:18

标签: knockout.js knockout-mapping-plugin

我有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中的其他值?

1 个答案:

答案 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的更多信息。