1
我想基於一些屬性使用Knockout.js顯示/隱藏html元素,但我得到的是閃爍。獨立於屬性值,所有元素都在加載時顯示,並且其中一些元素隱藏起來。Knockout.js如果僅在加載後才起作用。爲什麼?
這裏是我的腳本:
<li class="page-scroll" data-bind="if: !loggedIn()">
@Html.ActionLink(@ViewRes.SharedStrings.login, "User", "Home")
</li>
<li class="page-scroll" data-bind="if: loggedIn()">
<a href="#" data-bind="text: user().name, click: user().manage">
</a>
</li>
的問題是如何使淘汰賽insted的增加DOM的所有元素,並hidding之後他們,而不是將它們添加在所有。我甚至試過這個腳本:
<li class="page-scroll" data-bind="if: false">
<a href="#" data-bind="click: user().manage"
style=" background: url(/Content/img/vahagn.jpg) no-repeat center left; background-size: contain; border-radius: 30px; width: 60px; height: 60px; margin-left: 25px;">
</a>
</li>
這個元素也顯示在加載的過程中。 我想這句法太
<!-- ko if: loggedIn()-->
my elements
<!-- /ko -->
在這種情況下發生同樣的情況。
任何解決方案?
淘汰賽綁定顯然無法工作如果尚未加載。爲了消除閃爍,你必須手動隱藏條件元素,讓它在加載後處理可見性 – dfperry
感謝dperry的答案,但在這種情況下我也會閃爍。現在,我的所有元素都在加載過程中隱藏起來,並在加載後顯示出其中一些元素在我的情況下,這個元素是菜單按鈕,閃爍是真正可見的。 –
我會向具有'display:none'作爲主要屬性的元素添加一個類,然後在'if'旁邊添加'visible'綁定。當頁面出現時,淘汰賽相關物品將被隱藏,然後在淘汰賽加載/準備好後開啓。應該不閃爍。 – dfperry