我正在尝试当一个人更改先前绑定的复选框的状态时,我想用新值更新服务器。 所以这就是我所拥有的:
JSCRIPT
function JobViewModel() {
var self = this;
var baseUri = '/Api/Pedidos/';
self.TotalItems = ko.observable(@Model.TotalItems);
self.AbreviaNome = ko.observable(@Model.AbreviaNome.ToString().ToLower());
self.AbreviaFantasia = ko.observable(@Model.AbreviaFantasia.ToString().ToLower());
self.update = function () {
alert('Boom');
$.ajax({
type: "PUT",
url: baseUri,
data: self.Job,
datatype: "json",
contenttype: "application/json"
})
.done(function (data) {
//handleSuccessFunctionHERE(data);
alert('Magic');
})
.error(function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
alert("fail");
});
};
}
function JobDetailsViewModel() {
var self = this;
var baseUri = '/Api/Pedidos/';
self.Job = new JobViewModel();
}
HTML
<label class="btn btn-primary" data-bind="css: {active:Job.AbreviaNome }">
<input type="checkbox" data-bind="checked: AbreviaNome , onchange: Job.update" name="type" id="AbreviaNome "> Nome</input>
</label>
这永远不会触发更新功能。我也试过了:
<label class="btn btn-primary" data-bind="css: {active:Job.AbreviaNome }">
<input type="checkbox" data-bind="checked: AbreviaNome , click: Job.update" name="type" id="AbreviaNome "> Nome</input>
</label>
这在JobViewModel中:
this.AbreviaNome.subscribe(function (newValue) {
alert('test');
}, this);
有什么想法吗?
答案 0 :(得分:0)
您应该使用subscribe
而不是onchange
处理程序。你提到你试过了,但你订阅了AbreviaNome而不是AbreviaLogradouro。
答案 1 :(得分:0)
解决了问题,下面是绑定:
<label class="btn btn-primary " data-bind="css: {active:Job.AbreviaNome}">
<input type="checkbox" data-bind="checked: Job.AbreviaNome, event: {change: Job.update}" name="type" id="AbreviaNome">Nome/Razão</input>
</label>
不确定这是最好的方法,但它有效。