Я только что начал изучать нокаут и интересное сито.Обновить видимую привязку, сделанную в нокаут?
У меня есть «волшебник» с тремя шагами. В зависимости от выбора, сделанного на шаге 1 и 2, разные вещи должны показать на шаге 3.
Я сделал функцию в Нокаут:
self.canSendLetter = ko.computed(function() {
console.log('Inside canSendLetter');
if (self.priceStatus == "success") {
return true;
}
return false;
});
В моем интерфейсе я попытался следующие два DataBindings:
<input id="btnsubmit" type="submit" class="btn btn-primary btn-lg submitAbe" value="@ViewRes.StampAndSendLetter »" data-bind="visible: canSendLetter(), click: save" />
Я могу видеть, что во время загрузки страницы регистрируется «внутри candsendletter». Однако мне нужно это «видимое связывание» для обновления, когда я перехожу к шагу 3 в своем мастере.
В настоящее время у меня есть следующий код в goToStepThree:
self.goToStepThree = function() {
if (self.uploadPdf() == 1 && self.uploadFileKey() == '') {
self.showMissingUpload(true);
return false;
} else if (self.writeContentEditor.getData() == '') {
self.showMissingWriteContent(true);
return false;
}
var thiz = self;
var writtenContent = encodeURIComponent(self.htmlEncode(self.writeContentEditor.getData()));
$.ajax({
url: self.getPriceUrl,
type: 'POST',
data: {
usePdf: self.uploadPdf() == 1 ? 'true' : 'false',
uploadFileKey: self.uploadFileKey(),
content: writtenContent,
address: self.address(),
postal: self.postal(),
city: self.city(),
country: self.country()
},
dataType: 'json',
success: function (data) {
thiz.priceStatus = data.status;
thiz.priceStatusMessage = data.message;
thiz.cost(data.price);
thiz.numberOfPages(data.numberOfPages);
if (data.isAuthenticated) {
self.isAuthenticated(true);
self.isValidCredits(data.isValidCredits);
self.paymentMethod('Credits (' + data.credits + '$ left)');
}
thiz.currentStep(3);
}
});
};
Так что мой вопрос:
Как убедиться, что моя кнопка btnsubmit, является вызовом функции canSendLetter, когда я иду к третьему шагу?
EDIT:
Мой ViewModel:
Я определил priceStatus и priceStatusMessage наблюдаемыми здесь:
self.priceStatus = ko.observable('');
self.priceStatusMessage = ko.observable('');
Вы не указали нам свой полный код. Пожалуйста, включите и другие релевантные детали, дайте нам краткое воспроизведение. – Jeroen
Включите 'priceStatus' в наблюдаемое вместо простого значения. Связывание «видимых» будет пересчитано при изменении значения «priceStatus». – DCoder
Измените 'thiz.priceStatus = data.status;' на 'thiz.priceStatus (data.status);' и 'self.priceStatus ==" success "' to 'self.priceStatus() ==" success "' – haim770