重建绑定传递给ViewModel的数据的更改

时间:2015-12-23 11:37:37

标签: javascript jquery html knockout.js

这就是场景。我想在点击更改时更新名称。我在这里引用的数据代表真实代码中的ajax数据。希望这说清楚。

这是我的:

Java脚本

$(document).ready(function() {
  var data = "bipin";
  $("#ram").click(function() {
    data = "hari";

  });
  ko.applyBindings(new ViewModel(data));
});


function ViewModel(name) {
  var self = this;
  self.name = name;
}

和HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<html>

<body>
  <b>Name:</b>
  <span data-bind="text:name"></span>
  <button id="ram">change</button>
</body>

</html>

2 个答案:

答案 0 :(得分:4)

你应该使用可观察的容器:

$(document).ready(function() {
  var data = ko.observable("bipin");
  $("#ram").click(function() {
    data("hari");
  });
  ko.applyBindings(new ViewModel(data));
});

function ViewModel(name) {
  var self = this;
  self.name = name;
}

答案 1 :(得分:1)

你在做什么不是淘汰赛的方式。看看他们的learning center

要回答你的问题,这是正确的方法:

&#13;
&#13;
function ViewModel () {
  var self = this;
  
  self.name = ko.observable('John');
  
  self.changeName = function () {
    self.name('Jessica');  
  }
}

ko.applyBindings(new ViewModel());
&#13;
<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>

<h1>Name :</h1>
<input type="text" data-bind="value: name" />
<button data-bind="click: changeName">Click me</button>
&#13;
&#13;
&#13;