この単純なアニメーションをノックアウトで実装したいと思います。
function scroll(back) {
var scrollContainer = $('.scrollingContent');
var newContent = $("<div class='content'></div>");
var oldContent = scrollContainer.children().first();
newContent.css("width", "50%");
var contentSize = oldContent.width();
var newContentColor = oldContent.css("background-color") == "rgb(255, 0, 0)" ?
"green" : "red";
newContent.css("backgroundColor", newContentColor);
if (back) {
newContent.css("margin-left", -contentSize);
scrollContainer.prepend(newContent);
newContent.animate({ "margin-left": 0 }, 600,
function () { oldContent.remove(); });
} else {
scrollContainer.append(newContent);
oldContent.animate({ "margin-left": -contentSize }, 600,
function () { oldContent.remove(); });
}
}
例はここで見ることができます:http://jsfiddle.net/VMx3j/106/
カスタムバインディングについてたくさん読んだことがありますが、それを正しく行う方法がまだわかりません。
私には2つのアイデアしかありませんでした。最初は、foreach配列を作成し、afterRender、afterAdd、またはbeforeRemoveにバインドすることでした。しかし、それは正しいでしょうか?この場合のコードは十分に理解できず、何かを変更するのは非常に難しいと思います。また、別のアイデアは、カスタムバインディングを作成することでした。しかし、私が理解している限り、このアプローチは1つの要素でのみ機能し、少なくとも2つの要素にアクセスする必要があります。
また、コンテンツ要素がテンプレートであることに注意してください(これはこのアニメーションによって常に変更されます)。
あなたがそれについて何か考えを持っているならば、助けてください。