我在頁面中使用敲除來顯示其他元素。我想要一個div只有在用戶是管理員時纔有風格顯示。想要一個div根據真實的假條件可見
<div data-bind="display: !isCurrentUserAnAdmin" class="slidingDiv" style="display:none">
我在我的頁面中使用敲除來確定登錄的用戶是否是管理員。這可能使用div元素的數據綁定?
我在頁面中使用敲除來顯示其他元素。我想要一個div只有在用戶是管理員時纔有風格顯示。想要一個div根據真實的假條件可見
<div data-bind="display: !isCurrentUserAnAdmin" class="slidingDiv" style="display:none">
我在我的頁面中使用敲除來確定登錄的用戶是否是管理員。這可能使用div元素的數據綁定?
兩個簡單的音符:在可見的結合
淘汰賽文檔
,如果你想通過淘汰賽visible
結合控制元素的可見性,你應該不適用,可與任何干擾樣式,即你應該從你的div刪除style="display:none"
觀測值都必須是功能評估以獲得它們的價值。當您指定一個表達式時,會返回一個observable
ko綁定,ko檢測它並自動解包該值。所以,這個綁定將起作用:visible: isCurrentUserAnAdmin
,因爲isCurrentUserAnAdmin
是可觀察的。但是,如果綁定表達式返回的東西不是可觀察的,則表達式按原樣計算。因此,當評估此綁定時:visible: !isCurrentUserAnAdmin
,visible
總是變成錯誤,因爲isCurrentUserAnAdmin
返回function
,這是一個truish
值,即!
被否定爲false
時。因此,您必須手動提取包括括號的值,即visible: !isCurrentUserAnAdmin()
。這是新用戶的最常見錯誤。 *注意:另一個典型的錯誤是訪問像這樣的可觀察值的子屬性:parent.childProperty
,這是未定義的(可觀察的函數不包含childProperty
)。在這種情況下,您可以使用parent().childProperty
(返回自動解包的觀察值),或者使用直接提取可觀察值的parent().childProperty()
。
至於第二點,你可以在你的viewmodel中包含一個計算的observable,以避免在客戶端評估它。類似這樣的:
this.adminVisible = ko.computed(function() { return !isCurrentUserAnAdmin(); }, this);
那麼你的綁定將是:visible: adminVisible
。我更喜歡使用計算的可觀察對象,因爲它們不易出錯,更易於測試,並且綁定變得更乾淨。
theres no「display」binding,它是一個「可見的」綁定。所以像:
<div data-bind="visible: !isCurrentUserAnAdmin()" class="slidingDiv" style="display:none">
翻譯爲「這個div是可見的,如果!isCurrentUserAnAdmin()
是真的
PS,在data-bind
,如果你想要的isCurrentUserAnAdmin
的價值,你需要把()
如果一個可觀測http://knockoutjs.com/documentation/visible-binding.html
也許偏離主題,但即使元素被隱藏,也可以通過dom檢查器輕鬆更改,以使其顯示。如果用戶不是管理員,我建議不要渲染元素。 – taxicala
一旦滿足其他條件,該元素對管理員可見。謝謝 –