javascript
  • knockout.js
  • 2012-06-15 5 views 0 likes 
    0

    가 여기에 관련 코드의 결합 foreach는 개별 텍스트 상자에 데이터 바인딩 :녹아웃 :

    <div data-bind="foreach: chats, visible: chats().length > 0"> 
        <input data-bind='value: $parent.newCommentText' /> 
        <a href="#" data-bind='click: $root.addComment'>Add comment</a> 
    </div> 
    

    뷰 모델 :

    self.newCommentText = ko.observable() 
    self.addComment = function(chat) { 
          var newComment = { CourseItemDescription: self.newCommentText(), }; 
          chat.CommentList.push(newComment); 
          self.newCommentText(""); 
          $.ajax({ 
           url: "@Url.Action("AddComment")", 
           data: ko.toJSON(newComment), 
           type: "post", 
           contentType: "application/json" 
          }); 
         }; 
    

    문제는 이것이 내가 하나 개의 텍스트 상자에 입력 무엇 이건을 넣을 것입니다 다른 모든 텍스트 상자에. 사용자가 입력하는 텍스트 상자에만 바인딩하고 해당 데이터를 addComment 함수에서 사용할 수 있도록하려면 어떻게해야합니까?

    답변

    1

    각 채팅에서 추가 할 고유 한 메모 필드를 가질 수 있도록하려면 newCommentText 필드를 부모가 아닌 chat 개체에 추가해야합니다. 그런 다음 addComment에 전달 된 chat 개체에서 읽을 수 있습니다.

    0

    chats 배열 내에 newCommentText를 넣어야했습니다.

    그래서 코드가 될 것

    self.addComment = function(chat) { 
          var newComment = { CourseItemDescription: chat.newCommentText(), }; 
          chat.CommentList.push(newComment); 
          chat.newCommentText(""); 
          ... 
         }; 
    
    관련 문제