2014-08-30 70 views
0

我有這個fiddle。我想要做的就是將嵌套在每個對象字面值中的值轉換爲一個字符串。轉換數據綁定值到foreach敲除內的字符串

<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. 

輸出如何轉換的可觀察到內部的foreach不同的價值?

回答

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。

+0

非常感謝。我總是忘記$數據,這是使用.. – 2014-08-30 05:10:09