테이블에 열을 정렬하는 코드를 작성 중입니다. (테이블은 KnockOutJS를 통해 데이터에 바인딩됩니다.) 다른 테이블과 페이지에서이 프로세스를 자동화하는 데 도움이되도록 열 이름이있는 개체와 열이 바인딩 된 개체의 sortPropertyName을 만들었습니다.JavaScript에서 중첩 된 속성에 액세스
self.sort = function (header, event) {
var prop = header.sortPropertyName;
self.people.sort(function (a, b) {
return a[prop] < b[prop] ? -1 : a[prop] > b[prop] ? 1 : a[prop] == b[prop] ? 0 : 0;
});
};
이 (전체 신용 http://ryanrahlf.com/sorting-tables-by-column-header-with-knockout-js-part-2/을 라이언 Rahlf로 이동) :
self.headers = [
{ title: 'ID', sortPropertyName: 'organizationId' },
{ title: 'Name', sortPropertyName: 'name' },
{ title: 'City', sortPropertyName: '[address].city' },
{ title: 'State', sortPropertyName: '[address].state' },
{ title: 'Phone Number', sortPropertyName: 'phone' }
];
그 종류의 속성은 단지되며 sortProperty을 기준으로 데이터를 정렬해야하는, 일종의 루틴에 전달 이름 및 ID와 같은 "루트"속성 인 속성에 대해서는 잘 작동하지만 City 및 State 등의 정보가 들어있는 "Address"라는 다른 객체가 있습니다.이 때문에 sort() 함수가 깨졌습니다 방법을 정확하게 지정하지 않았습니다. "city"및 "state"매개 변수를 가져옵니다.
예를 들어, 액세스하기 위해 "이름"우리는 person.name 또는 사람 [ '이름']를 사용할 수 있습니다. 그러나 주소의 경우에는 상황이 좀 더 복잡해집니다. person.address.city 또는 사람 [ '주소'] 도시 또는 사람 [ '주소'] [ '도시']을 사용할 수 있습니다.
그러나 형식의 어떠한 조합 내가 종류() 함수에 전달하는 sortPropertyName에 관해서 저를 위해 일하게 될 것 같다. "이름"은 잘 작동하지만 "도시"와 "주"는 그렇지 않습니다.모든 것이 예상대로 작동하도록 코드를 수정하려면 어떻게해야합니까?
브릴리언트합니다. 고맙습니다. –