2013-03-31 3 views
0

HTML 테이블을 가지고 있으며 knockout.js 관측 값을 정의하려고합니다. createTrack 함수를 클릭하면 테이블의 기존 내용이 다시 추가되고 트랙에 대한 새 항목을 추가하려고합니다. 이 문제를 해결하는 데 도움이 필요합니다.Knockout.js : 기존 테이블에 매핑하여 다중 항목 추가

참고 : JSON을 사용하여 콘텐츠를 동적으로 가져오고 싶지는 않습니다. SEO/기타 이유에 영향을주기 때문입니다. 바이올린에

링크 : 당신이 정말 동적 데이터와 함께 작동하도록 노력하지 않고있는 것처럼 http://jsfiddle.net/ATDJp/1/

보기 모델 코드

(function() { 
    var tracks = ko.utils.parseHtmlFragment('#tracks-table'); 

    // represent a single track item 
    var Track = function (TrackNo, TrackTitle, TrackLength) { 
     this.TrackNo = ko.observable(TrackNo); 
     this.TrackTitle = ko.observable(TrackTitle); 
     this.TrackLength = ko.observable(TrackLength); 
    }; 

    var TracksViewModel = function (tracks) { 
     var self = this; 

     // All track 
     self.tracks = ko.observableArray(ko.utils.arrayMap(tracks, function (track) { 
      return new Track(track.TrackNo, track.TrackTitle, track.TrackLength); 
     })); 

     // Add a new Track on click of new button 
     self.createTrack = function() { 
      // Add a new Track 
      self.tracks.push({ TrackNo: "", TrackTitle: "", TrackLength: "" }); 
     }; 
    } 

    // check data from local table 

    // var tracks = ko.utils.parseJson(JSON.stringify(jQuery('#tracks-table').tableToJSON())); 

    // bind a new instance of our view model to the page 
    var TracksViewModel = new TracksViewModel(tracks || []); 
    ko.applyBindings(TracksViewModel); 
})(); 
+0

도보기를 게시하시기 바랍니다! JSFiddle이 작동하면 더 나아질 것입니다 ... – nemesv

+0

또한 HTML 코드를 질문에 추가해야합니다. – Sandro

+0

done :-)하지만 함수를 추가 할 수 없습니다 : ( – MusicMan

답변

0

는 소리가 난다. 왜 당신은이 작업을 위해 녹아웃을 바꾸고 jQuery를 사용하지 않는가? HTML 오류 (비 종료 TD)도있었습니다.

http://jsfiddle.net/ATDJp/3/

$('#btnaddnewtrack').on('click', function() { 
     $('#tracks-table tr:last').after('<tr><td>3</td><td>track3</td><td>4:30</td></tr>'); 
}); 
+0

Tat 작동! 죄송합니다, jQuery 접근 완전히 모델을 망칠 것입니다.이 후 기존 트랙에서 편집하려면 두 번 클릭하십시오. jQuery에서이 작업을 수행하려면 많은 코드를 작성해야 할 것입니다. – MusicMan

+0

정적 데이터를 동적으로 혼합하고 있습니다. 정적 데이터를 편집하려면 실제로 편집중인 부분이 있습니다. 디스플레이를 편집하고 있습니다. SEO 용 고정 페이지 페이지에 조용히 링크 된 다음 실제 동적 데이터로보기 모델을 채운 다음 사용자가 상호 작용할 수있는 유연하고 동적 인 페이지와 크롤러가 상호 작용하는 정적 페이지를 갖게됩니다. – Mike

+0

@Mike, 비슷한 문제가 있습니다 정적이 아닙니다 데이터로드는 페이지로드시 DB에서 검색된 다음 목록에서 항목을 추가/제거하고 싶습니다. 항목을 추가하거나 제거 할 때마다 Httpr equest가 서버로 보내져 DB를 업데이트합니다. Ajax를 통해 페이지로드시 데이터를 검색하는 시점이 보이지 않습니다. 서버 측에서 수행 할 수 있습니다. – Steven

관련 문제