0
我想弄清楚如何做這樣的事情,如自動處理服務器上的一些viewmodels observable數組,並讓它逐一更新jquery ui progressbar,我想出了以下代碼:)處理可視化的視圖模型與進度條和淘汰賽
<div data-bind="progressBar: { value: progressValue, max: ViewModels().length }" style="width: 100%">
</div>
ko.bindingHandlers.progressBar = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var value = valueAccessor();
$(element).progressbar({
value: false,
max: ko.unwrap(value.max)
});
},
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var value = valueAccessor();
$(element).progressbar("option", "value", ko.unwrap(value.value));
}
}
function ViewModel(model) {
var self = this;
ko.mapping.fromJS(JSON.parse(model), {}, self);
self.progressValue = ko.observable(0);
ko.computed(function() {
if (self.ViewModels().length > 0) {
var first = self.ViewModels()[0];
$.ajax({
//send first viewmodel on server and do something with it
success: function (result) {
self.ViewModels.remove(first);
self.progressValue(self.progressValue() + 1);
}
});
}
})
}
當您計算的遞歸調用時,您如何看待這種方法?也許你沒有看到任何真正的用法,但是如果,你會如何做到這一點?
謝謝您的回答,並注意有關遞歸中計算的觀測,還另這樣做可以做到的方式是訂閱數組,但正如你所說的使用函數更簡單 – sanjuro