Похоже, что двойной ko.applyBindings вызывает проблему.
Это сработало:
$(function () {
var viewModel = {
showVoucher: ko.observable(true),
voucher: ko.observableArray([
{
VoucherNumber: "100000",
VoucherImage: "someurl",
VoucherExpiry: "20/3/12",
VoucherRedeemed: true,
VoucherDesc: "ddwqdwqdwqd",
VoucherPuchaseDate: "20/12/11",
VoucherPrice: "50"
},
{
VoucherNumber: "200000",
VoucherImage: "someurl",
VoucherExpiry: "20/3/12",
VoucherRedeemed: true,
VoucherDesc: "ddwqdwqdwqd",
VoucherPuchaseDate: "20/12/11",
VoucherPrice: "50"
}
])
};
//VIEWMODEL
ko.applyBindings(viewModel);
});
Если есть лучший способ написать это, пожалуйста, дайте мне знать.
Отредактированная версия ниже, также пробует сопоставление:
<script>
function getVoucherData() {
//some ajax call;
return data = { "voucher" : [{
VoucherTitle: "Offer title 1",
VoucherNumber: "100000",
VoucherImage: "someurl",
VoucherExpiry: "20/3/12",
VoucherRedeemed: true,
VoucherDesc: "ddwqdwqdwqd",
VoucherPuchaseDate: "20/12/11",
VoucherPrice: "50"
},
{
VoucherTitle: "Offer title 2",
VoucherNumber: "200000",
VoucherImage: "someurl",
VoucherExpiry: "20/3/12",
VoucherRedeemed: true,
VoucherDesc: "ddwqdwqdwqd",
VoucherPuchaseDate: "20/12/11",
VoucherPrice: "50"
}]
};
}
function initViewModel() {
var viewModel = {};
// PAGE SETUP
viewModel.showVoucher = ko.observable(true);
viewModel.showMyAccount = ko.observable(false);
// GET VOUCHER
var voucherData = getVoucherData();
voucherData.voucher.sort(function (left, right) {
return left.VoucherNumber > right.VoucherNumber
});
viewModel.voucher = ko.mapping.fromJS(voucherData.voucher);
// START
ko.applyBindings(viewModel);
}
$(function () {
initViewModel();
});
</script>