knockout爲綁定元素生成id

knockout 提供生成了uniqueName的方法,但沒有提供生成Id的方法。

感謝stackoverflow提供的思路與方法。

下面是uniqueName的實現方法。

ko.bindingHandlers['uniqueName'] = {
    'init': function (element, valueAccessor) {
        if (valueAccessor()) {
            element.name = "ko_unique_" + (++ko.bindingHandlers['uniqueName'].currentIndex);

            // Workaround IE 6 issue - http://www.matts411.com/post/setting_the_name_attribute_in_ie_dom/
            if (ko.utils.isIe6)
                element.mergeAttributes(document.createElement("<input name='" + element.name + "'/>"), false);
        }
    }
};
ko.bindingHandlers['uniqueName'].currentIndex = 0;

綁定

<input type="checkbox"  data-bind="uniqueName:true" />

對於Id

ko.bindingHandlers['uniqueId'] = {
                'init': function (element, valueAccessor) {
                    if (valueAccessor()) {
                        element.id = "ko_unique_" + (++ko.bindingHandlers['uniqueId'].currentIndex);
                    }
                }
            };
<input type="checkbox"  data-bind="uniqueId:true" />

對於label的for屬性

ko.bindingHandlers['foruniqueId'] = {
                'init': function (element, valueAccessor) {
                    if (valueAccessor()) {
                        element.setAttribute('for', "ko_unique_" + (++ko.bindingHandlers['foruniqueId'].currentIndex));
                    }
                }
            };

html元素

<label data-bind="foruniqueId:true" ></label>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章