2017-04-13 100 views
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

然後,當你想修改可觀察到的價值,你需要把它看成一個函數,並將新的值作爲這樣firstName('newValue')

參數請參閱以下鏈接here以獲得更多的信息和下面的例子:

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>