2014-08-30 3 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" 
} 

처럼 사용할 얻으려면 내가 foreach는 내부에 다른 값으로 관찰을 변환하려면 어떻게

RobbStark SanJose 
JohnSnow San Francisco. 

같은 출력?

답변

2

당신이해야 할 일은 텍스트 데이터 바인딩에서 자바 스크립트 함수를 호출하여 for each 루프에서 현재 항목 ($ data)을 매개 변수로 전달하는 것입니다. 예 fiddle

자바 스크립트 : documentation 자세한 내용은 약 $ 데이터를 포함하는 KnockoutJS에서

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> 

참고 # 1.

+0

고마워요. 나는 항상 $ 데이터를 잊고 그것의 사용 .. –