javascript
  • jquery
  • knockout.js
  • knockout-mapping-plugin
  • 2017-04-13 3 views 0 likes 
    0

    매핑 버튼 클릭으로 녹아웃 작동하지, 내가 한방에 매핑을 사용했다매핑,

    을 클릭합니다. 는

    <div class='sample'> 
        <p>Load: <input type="button" value="Load User Data" data-bind="click: loadUserData" /></p> 
        <p>Name: <input data-bind='value: firstName' /></p> 
        <p>Save: <input type="button" value="Save User Data" data-bind="click: saveUserData" /></p> 
    </div> 
    <script> 
        $(document).ready(function() { 
         var viewModel = {}; 
         viewModel.firstName = 'Knockout JS'; 
         viewModel.loadUserData = function() { 
          $.getJSON("/data.json", function (data) { 
           // update the data in existing ViewModel. 
           viewModel.firstName = data.name; 
           ko.mapping.fromJS(data, viewModel); 
    
          }); 
         }; 
         viewModel.saveUserData = function() { 
          // Convert the viewModel into JSON. 
          var data_to_send = { userData: ko.toJSON(viewModel) }; 
          // Send that JOSN data to server. 
          $.post("WebService.asmx/updateData", data_to_send, function (data) { 
           alert("Your data has been posted to the server!"); 
          }); 
         }; 
         ko.applyBindings(viewModel); 
        }); 
    </script> 
    

    내가 어떤 잘못했는지, 클릭 로드 사용자 데이터 버튼 여기

    내 코드 뒤에 이름 입력 텍스트에 대한 값을 변경해야합니까?

    답변

    1

    UI를 업데이트하려면 이름을 observable으로 만들어야합니다. 당신이 관찰 값을 수정하고자 할 때

    그런 다음, 당신은 더 많은 정보와 아래 샘플을 얻을 수있는 링크 here를 참조 함수로 그 취급이 firstName('newValue')

    같은 인수로 새로운 가치를 전달해야합니다 :

    var masterVM = (function() { 
     
        var self = this;  
     
        self.firstName = ko.observable("Knockout JS"); 
     
        self.loadUserData = function() { 
     
        var currentName = self.firstName(); 
     
        self.firstName(currentName + "Updated"); 
     
        } 
     
    })(); 
     
    
     
    ko.applyBindings(masterVM);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
     
    
     
    <p>Load: <input type="button" value="Load User Data" data-bind="click: loadUserData" /></p> 
     
    <p>Name: <input data-bind='value: firstName' /></p>

     관련 문제

    • 관련 문제 없음^_^