最好的辦法:
ko.bindingHandlers.img = {
// Mise à jour de l'image
update: function (element, valueAccessor) {
// Données de l'observable
var value = ko.utils.unwrapObservable(valueAccessor()),
src = ko.utils.unwrapObservable(value.src),
fallback = ko.utils.unwrapObservable(value.fallback),
$element = $(element);
// On set l'url de l'image, si fichier innaccesible alors on set le src à fallback (url par défaut)
if (src) {
$element.attr("src", src);
} else {
$element.attr("src", fallback);
}
},
// Init de l'image
init: function (element, valueAccessor) {
var $element = $(element);
$element.error(function() {
var value = ko.utils.unwrapObservable(valueAccessor()),
fallback = ko.utils.unwrapObservable(value.fallback);
$element.attr("src", fallback);
});
}
};
<img class="img-rounded img-responsive center-block" data-bind="img: { src: pictureUrl, fallback: _pictureDefault }" />
完美,謝謝!我想我沒有正確理解數據綁定如何工作,這使事情變得更清晰。 – user1573618
沒問題,Knockout祝你好運,這是一個非常棒的圖書館,迄今爲止你對它有着深刻的理解。 –