應用可見的綁定我正在寫一個自定義綁定,但作爲它的一部分,我需要通過javascript應用可見綁定的數據綁定。似乎沒有什麼問題可以讓它在前面工作,但是當正在使用的observable被更新時,綁定不會被重新評估。應用可見的綁定與knockout
在查看KO的源代碼時,沒有init事件,所以不確定是否在某些圖層上發生了某些空間魔術,以便重新評估可觀察變化的dom元素,但我無法找到此信息。
那麼,有沒有建立一個人工結合其重新評估,或者我需要創建自己的訂閱回調將一些特定的方式重新評估可見約束力?
這裏是我使用的代碼:我知道我可以寫我自己的顯示和隱藏的邏輯
ko.bindingHandlers.visible.update(element, isVisibleObservable, allBindingsAccessor, viewModel);
,但我認爲這將是對乍一看容易使用現有的綁定,以便做它在引擎蓋下。
這裏是代碼的使用場景的一個簡單的例子:
ko.bindingHandlers.someCustomBinding = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var allBindings = allBindingsAccessor();
var customBindings = allBindings.someCustomBinding;
var someReferencedElement = $(customBindings.target)[0];
var isVisible = (customBindings.isDefault) ? true : false;
var visibleObservable = ko.observable(isVisible);
knockout.bindingHandlers.visible.update(someReferencedElement, visibleObservable, allBindingsAccessor, viewModel);
element.onclick = function() {
var toggledValue = !visibleObservable();
visibleObservable(toggledValue)
};
}
};
我已經很大程度上簡化了的情況下,參數等,從而去除驗證,但應該強調的主要用途和問題。當我用自定義綁定單擊元素時,它會切換值(正如我可以在調試器中看到的那樣),儘管它不更新被引用的DOM元素的可見性。
你有更多的代碼可以共享,所以我們可以嘗試重現該問題? – Tanner
我不確定這是一個問題還是按預期工作,我可以提供更多信息,但上面顯示使用的癥結所在,將添加一個包裝以給出更多關於如何使用它的指示。 – Grofit