2016-06-16 3 views

답변

1

가장 간단한 방법은 jQuery의 ajax() 메소드를 사용하는 것입니다.

  1. 이 값이 저장하려는 관측에 구독을 추가 에 관해서는

    , 당신은 두 가지 옵션이 있습니다. 예를 들어 ,

    var viewModel = function() { 
    
        var self = this; 
    
        self.name = ko.observable(""); 
        self.name.subscribe(function(latestValue) { 
         // This subscription will be triggered each time 
         // the 'name' observable is updated. 
         // The latest value of the observable is passed 
         // here as a parameter. 
         $.ajax({ 
          // see http://api.jquery.com/jquery.ajax/ for details 
         }); 
        }); 
    } 
    
  2. /전망 다음 DOM/뷰에서 DOM에 다음

    var viewModel = function() { 
    
        var self = this; 
    
        self.name = ko.observable(""); 
    
        self.save = function() { 
         // unlike the first example, you would typically 
         // POST more data in this AJAX request 
         $.ajax({ 
          // see http://api.jquery.com/jquery.ajax/ for details 
         }); 
        }; 
    } 
    

    그리고 이것을 호출하는 save 함수를 만듭니다

    <input type="button" value="Save" data-bind="click: save" /> 
    

때 두 번째 예제를 사용하면 POST 데이터를 JSON으로 쉽게 구할 수 있습니다. 그러한 경우에는 ko.toJSON 또는 심지어 JSON.stringify을 사용할 것으로 예상됩니다. 그러나 귀하의보기 모델에 자신의 toJSON 함수를 정의하는 것이 좋습니다.

당신이 당신의 자신의 toJSON 기능은 뷰 모델은 당신이 중 하나가 을 원하지 또는 (선택 가능한 목록을 다시 서버로 보낼 필요을하지 않는 멤버를 가질 수 있다는 것입니다 정의하는 것이 제안 이유 예를 들어, 국가 또는 계산 된 관측 가능). ko.toJSON에 전화하면 모든 것이 직렬화됩니다. 자신 만의 함수를 정의하면 어떤 데이터가 직렬화되는지 정확히 제어 할 수 있습니다.

JSON.stringify (knockout가 내부적으로 호출하는)은 toJSON 함수에 대한 개체를 찾습니다. 이 함수가 있으면이 함수가 사용되고, 그렇지 않으면 모든 함수가 직렬화됩니다.

여기에서 중요한 점은 toJSON 함수가 의 직렬화 된 객체 인이 아닌 직렬화 될 객체를 반환해야한다는 것입니다. [Documentation]

그래서 우리는 (위의 예 2)을 수정할 수 있습니다 : 나는 당신이 _little 귀하의 질문에 좀 더 구체적인 bit_ 할 필요가 있다고 생각

 
var viewModel = function() { 

    var self = this; 

    self.name = ko.observable(""); 

    self.save = function() { 
     // unlike the first example, you would typically 
     // POST more data in this AJAX request 
     $.ajax({ 
      // see http://api.jquery.com/jquery.ajax/ for details 
     }); 
    }; 

    self.toJSON = function() { 
     return { 
      name: ko.unwrap(self.name), 
      ... 
     }; 
    }; 
} 
관련 문제