knockout为绑定元素生成id

Posted lucika

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于knockout为绑定元素生成id的主要内容,如果未能解决你的问题,请参考以下文章

Knockout JS绑定元素的属性为另一个元素

knockout.js--基本用法

Knockout js在第二次绑定后继续显示/隐藏元素

Knockout js绑定可空对象的属性

获取与 Knockout 绑定的 observable 元素?

Knockout JS 如何将数据绑定到静态表单元素