我正在使用模板綁定呈現的列表上工作。這些物品有一個摺疊和展開的視圖,由單個物品的可觀察屬性決定。這是通過向模板名稱提供一個函數來完成的(就像在挖空文檔中一樣)。到目前爲止,一切都很順利。 現在..這個問題。我想在更改模板時爲過渡設置動畫。到目前爲止,我已經設法爲「In-Transition」(帶有afterRender事件)設置動畫效果,即當新模板加載時。但是我也希望在刪除舊模板之前爲其創建一個「Out-transition」。 這是我現在有多遠。 http://jsbin.com/UvEraGO/15/edit?html,js,output帶轉換的動態挖空模板
任何想法,我怎麼能實現這種「外出」?
下面是代碼:
[viewmodel.js]
var vm = {
items: [{name: 'John', age:'34', expanded: ko.observable(false)},
{name: 'David', age:'24', expanded: ko.observable(false)},
{name: 'Graham', age:'14', expanded: ko.observable(false)},
{name: 'Elly', age:'31', expanded: ko.observable(true)},
{name: 'Sue', age:'53', expanded: ko.observable(false)},
{name: 'Peter', age:'19', expanded: ko.observable(false)}]
};
vm.myTransition = function(el){
$(el[1]).hide().slideDown(1000);
};
vm.templateSelector = function(item){
return item.expanded() ? 'expanded_template' : 'collapsed_template';
}.bind(vm);
vm.toggleTemplate = function(item){
item.expanded(!item.expanded());
};
ko.applyBindings(vm);
和HTML:
<div data-bind="template: { name: templateSelector, foreach: items, afterRender: myTransition }"></div>
<script type="text/html" id="collapsed_template">
<div style="min-height: 30px">
<strong>Name: <span data-bind="text: name"></span></strong>
<button data-bind="click: $parent.toggleTemplate">Expand</button>
<div>
</script>
<script type="text/html" id="expanded_template">
<fieldset style="height: 100px; min-height: 8px">
<legend>
<strong>Name: <span data-bind="text: name"></span></strong>
</legend>
<div>
Age: <span data-bind="text: age"></span>
<button data-bind="click: $parent.toggleTemplate">collapse</button>
</div>
</fieldset>
</script>
請編輯您的問題,包括問題的相關代碼,以及(這確保問題仍然相關,即使鏈接腐爛或jsbin改變了事物)。 – Jeroen