업데이트 : 가장 중요한 정보를 잊어 버린 것 같습니다. 이것은 HTML 파일이 아니고 xsl 파일에 있습니다. ko 주석 태그가 제거되어 '이름'이 존재하지 않는 이유가 있습니다. JSFiddle을 통해 올바른 방향으로 나를 인도 해 준 데미안의 답변을 답으로 표시 할 것입니다. 감사.녹아웃과 함께 테이블의 내부 배열을 바인딩하는 방법
원래 질문 :
knockout.js와 테이블에 JSON 객체에서 내부 배열을 바인딩 할 수있는 방법이 있나요? 나는 여러 가지 방법으로 시도했지만, 그 중 누구도 일하는 것 같지 않습니다.
Binding Nested Array Using Knockout foreach
그러나, 두 경우 모두가 바인딩 컨테이너를 사용하는 두 개의 유사한 질문이 있습니다. 컨테이너가없는 바인딩을 사용해야하는데 작동하지 않는 것 같습니다.
var viewModel = function() { var self = this; self.reportData = ko.observableArray(); } var vm = new viewModel(); vm.reportData(data); ko.applyBindings(vm);
내가해야 할 것은 :
<tbody data-bind="foreach: reportData"> <tr> <td data-bind="text: Category"></td> </tr> <!-- ko foreach: Items --> <tr> <td data-bind="text: Name"></td> </tr> <!-- /ko --> </tbody>
나는 많은 시도했다
var reportData = {[ "Category": "First Category", "Id": 1, "Items": [ {"Name": "First Name"}, {"Name": "Second Name"} ] }, { "Category": "Second Category", "Id": 2, "Items": [ {"Name": "First Name"}, {"Name": "Second Name"} ] }];
바인딩 코드 (발췌) 기본입니다 : 여기
는 단순화 된 코드 예제입니다 내부 배열 데이터를 가져 오는 다른 방법이 있지만 'Name'이 정의되지 않은 오류가 항상 발생합니다. 나는 콘솔에서 올바른 데이터를 얻었음을 확인하고 외부 객체 배열 값은 문제없이 표시됩니다.이 내부 배열에 액세스하고 내부 배열에 컨테이너없는 바인딩이있는 테이블에 표시하는 올바른 방법은 무엇입니까?
는 내부 배열의 행 내 전체 코드에 표시되지 않으며, 난 항상 '이름'정의되지 않는 오류가 발생합니다. 그리고 이제는 바이올린에서 완벽하게 작동합니다 ... 다른 어떤 것이 그것과 충돌한다는 것을 의미해야합니다. – adimauro
오류가 발생하면 bindingContext에 무엇이 있습니까? – Damien
그거 알아? 나는 지금 매우 어리 석다. .. 나는 정보의 가장 중요한 부분을 잊었다. 이것은 html 파일이 아니라 xsl입니다. 코 코멘트가 벗겨졌다! 그래서 '이름'이 정의되지 않았습니다! xsl : comment 태그로 묶어야했습니다. JSFiddle을 사용하면 올바른 방향으로 나를 이끌었 기 때문에 나는 여전히 당신에게 크레딧을 줄 것입니다. 감사! – adimauro