KnockoutJS必需/禁用属性不会被删除(KnockoutJS Required / Disab

2019-10-22 03:52发布

所以我有一个淘汰赛原型在其中添加输入动态,然后设置各自的自己的设置。 认为它作为一个表单生成器就是这样。 然而,我注意到,残疾人和需要不起作用很大。 它的值设置为禁用或要求,但是当我把它变成假的,它仍然是元件上没有它的状态,导致它仍然起作用。 请谁能帮助或给予指导。

HTML

<div class="leftpanel">
                <div class="input-row" data-bind="foreach: inputItems">                 
                    <div class="input-row-item">                
                        <div class="input-item">    
                            <label data-bind="text: label"></label>                 
                            <input data-bind="attr:{ name: name, placeholder: placeholder, disabled: disabled, value: value, type: type }">                 
                        </div>
                        <div class="input-settings">
                            <input type="text" class="nb-remove" data-bind="value: label" placeholder="input label">
                            <input type="text" value="text" class="nb-remove" data-bind="value: type" placeholder="input type">
                            <input type="text" class="nb-remove" data-bind="value: name" placeholder="input name">
                            <input type="text" class="nb-remove" data-bind="value: placeholder" placeholder="input placeholder">
                            <input type="text" class="nb-remove" data-bind="value: disabled" placeholder="input disabled">
                            <input type="text" class="nb-remove" data-bind="value: value" placeholder="input value">
                        </div>
                    </div>                  
                </div>          
            </div>
            <div class="rightpanel">
                Here be draggables!
                <br/>
                <button data-bind="click: addInput">ADD TEXT INPUT</button>
            </div>

该JS

$(function(){
            var InputItem = function InputItem(label, type, name, placeholder, disabled, value) {
                this.label          = ko.observable(label);
                this.type           = ko.observable(type);
                this.name           = ko.observable(name);
                this.placeholder    = ko.observable(placeholder);
                this.disabled       = ko.observable(disabled);
                this.value          = ko.observable(value);
            }

            var ViewModel = function ViewModel() {
              var that = this;

              this.inputItems = ko.observableArray([]);

              this.addInput = function addInput() {
                that.inputItems.push(new InputItem());
              };

            }

            ko.applyBindings(new ViewModel());
        });

Answer 1:

你最好使用淘汰赛自身内置的disable装订处理程序:

<input data-bind="disable: disabled, attr: { name: name, placeholder: placeholder, value: value, type: type }" />

见小提琴

或者,你可以检查你的病情明确的“真”,所以,如果条件不满足淘汰赛会删除该属性。 例如:

<input data-bind="attr: { disabled: disabled() === 'true', ...}" />

看到这个小提琴 (在“禁用”输入型“真”来激活disabled )。



文章来源: KnockoutJS Required / Disabled attributes not removed