淘汰赛中的 UniqueID 绑定

Cha*_*ink 0 knockout.js

我试图弄清楚如何为元素的 ID复制唯一名称绑定的功能(以获得漂亮的验证工作)

ko.bindingHandlers.uniqueID = {
   'init': function (element, valueAccessor) {
        if (valueAccessor()) {
            element.ID = "ko_unique_" + (++ko.bindingHandlers['uniqueName'].currentIndex);
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

Jar*_*man 5

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;
Run Code Online (Sandbox Code Playgroud)

所以我认为你应该有这个(注意ID应该是id,IE6的东西被删除,uniqueName变成uniqueId)

ko.bindingHandlers['uniqueId'] = {
    'init': function (element, valueAccessor) {
        if (valueAccessor()) {
            element.id = "ko_unique_" + (++ko.bindingHandlers['uniqueId'].currentIndex);           
        }
    }
};
ko.bindingHandlers['uniqueId'].currentIndex = 0;
Run Code Online (Sandbox Code Playgroud)