我想要做的是動態模板綁定到一個observableArray與指定「afterAdd」和「beforeRemove」的選項。它可能更容易通過看我的代碼來理解:Knockoutjs動態模板綁定與Foreach和AfterAdd
<div id="form_container" data-bind="template: {name: fnGetTemplate,
foreach: OpenedForms(),
beforeRemove: fnBeforeRemoveProcess(),
afterAdd: fnAfterAddProcess()}"></div>
(simplfied版)OpenedForms = ko.observableArray(){模板: '模板1'},{模板:「則Template2}]。
fnGetTemplate非常重視數組元素並返回模板名稱,例如「Template1」。
數組中的所有內容都被渲染;但問題是,fnAfterAddProcess // fnBeforeRemoveProcess之前調用fnGetTemplate。所以它實際上在調用afterAdd和afterRemove之後呈現模板。我嘗試用afterRender替換afterAdd,但同樣的事情發生了。出於某種原因,它實際上是所謂fnBeforeRemoveProcess - >fnAfterAddProcess - >fnGetTemplate時,我只增加了observableArray的元素。
然而,這個工作正常,但它不支持「beforeRemove」:
<div id="form_container" data-bind="foreach: {data: OpenedForms, afterRender: AfterAddProcess}">
<div data-bind="template: {name: Template, data: $data}"></div>
</div>
也許我需要編寫自定義綁定,但如果有人能指出我哪裏錯了或者是更好的解決問題的方法。
感謝,