簡體   English   中英

淘汰賽中Attr綁定的問題

[英]Issue with Attr binding in knockout

我對數據屬性使用敲除屬性綁定,例如:

 <div data-bind="attr : { 'data-fire': Fire, 'data-age': Age }">
 </div>

現在我想要的是,如果有任何可觀察到的變量,即Fire and Age為null或為空,那么我不想添加空屬性名稱。 因此,如果假設Age為空,那么在應用綁定之后,我不希望我的標記是:

 <div data-bind="attr : { 'data-fire': Fire, 'data-age': Age }"  data-age data-fire="Yes">
 </div>

相反,我想刪除數據時代並想要這個干凈的標記:

 <div data-bind="attr : { 'data-fire': Fire, 'data-age': Age }" data-fire="Yes">
 </div>

有什么方法可以在kickout.js中實現?

您可以使用自定義綁定自己控制此操作:

<div data-bind="addAttributes : { 'data-fire': Fire, 'data-age': Age }"></div>

然后有一個處理程序:

ko.bindingHandlers.yourBindingName = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        // This will be called when the binding is first applied to an element
        // Set up any initial state, event handlers, etc. here
    },
    update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        // This will be called once when the binding is first applied to an element,
        // and again whenever the associated observable changes value.
        // Update the DOM element based on the supplied values here.
    }
};

在這些方法中,僅當值不為空時,才可以檢查值並手動添加屬性(例如,使用jQuery)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM