对属性,knockout.js的双向绑定

时间:2014-03-13 09:47:06

标签: javascript html knockout.js

我有一个带有data-status属性的按钮,该属性绑定到viewmodel中的observable属性。当我单击按钮时,数据状态属性会更改。但它不会影响viewmodel。如果我想用新值更新viewmodel怎么办?

<button id="changeStatus" data-status="0" data-bind="attr: {'data-status', Status}" />

$("#changeStatus").attr("data-status",1);

1 个答案:

答案 0 :(得分:1)

使用KO时,想法是更改viewModel,然后更改演示文稿。 因此,当用户点击按钮时,您应该更改VM:

如果您的VM看起来像这样:

var vm = function () {
var self = this;
self.status=ko.observable(false);
self.toggleStatus=function(){ self.status(!self.status()); } 

}

你的HTML应该是这样的:

<button id="changeStatus" data-bind="click: toggleStatus" />

如果你有几个按钮,你可以改变功能以获得obj:

var vm = function () {
var self = this;
self.status=ko.observable(false);
self.flag=ko.observable(false);
self.toggleStatus=function(data,event,obj){ self[obj](!self[obj]()); } 

}

<button data-bind="click: function(d,e){ togglebutton(d,e,'status');}" />
<button data-bind="click: function(d,e){ togglebutton(d,e,'flag');}" />

如果您需要更多信息,请告诉我