Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除获取绑定到DOM元素的可观察对象_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 敲除获取绑定到DOM元素的可观察对象

Javascript 敲除获取绑定到DOM元素的可观察对象,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我正在为击倒制作一个只读绑定 如果我将绑定应用到每个元素,那么它就可以很好地工作,如本手册所示: 但是,我希望能够将绑定设置为视图的根元素,而不是每个表单元素: <div data-bind="readonly: isReadonly"> <!-- My form elements here --> </div> ko.bindingHandlers.readonlyView = { init: function(element, valueAcce

我正在为击倒制作一个只读绑定

如果我将绑定应用到每个元素,那么它就可以很好地工作,如本手册所示:

但是,我希望能够将绑定设置为视图的根元素,而不是每个表单元素:

<div data-bind="readonly: isReadonly">
    <!-- My form elements here -->
</div>

ko.bindingHandlers.readonlyView = {
init: function(element, valueAccessor){
    var isReadOnly = ko.unwrap(ko.unwrap(valueAccessor()));
        if (isReadOnly) {
            var $elements = $(':text, :radio, :checkbox, :input', $(element));
            $elements.each(function(){
                var domElement = this;

                ko.cleanNode(domElement);

                var $domElement = $(domElement);

                if ($domElement.is(':text')) {
                    //I need the observable bound to the textbox text
                } else if ($domElement.is(':radio')) {
                    //I need to determine if the radio btn is checked
                } else if ($domElement.is(':checkbox')) {
                    //I need to determine if the checkbox is checked
                } else if($domElement.is(':input')) {
                    $domElement.prop('disabled', true);
                }
            })
        }
    }
}
当然,我可以解析每个元素上的数据绑定属性,但这似乎有点脏。还有其他更好的方法吗?

您确定淘汰“启用”或“禁用”绑定对您不起作用吗? 这些都可以共享相同的“只读”可观察标志


您的手机号码:

... var viewModel={ HasMobile:ko.可观察(假), 手机号码:“ };
根据您对7zark7的评论,我认为您真正想要的是
if
ifnot
绑定:

<label>Had caffeine fix
  <img src="checkmark.png" data-bind="if: isReadOnly() && coffeeConsumed()">
  <input type="checkbox" data-bind="ifnot: isReadonly, checked: coffeeConsumed">
</label>
havecaffinefix

它们绝对有效,但我想删除文本框之类的元素,只显示文本。选中的复选框将显示为复选标记等。在一天结束时,这一切都归结为美学。
<p>
  Your cellphone number:
  <input type='text' data-bind="value: cellphoneNumber, enable: hasCellphone" />
</p>

...

var viewModel = {
    hasCellphone : ko.observable(false),
    cellphoneNumber: ""
};
<label>Had caffeine fix
  <img src="checkmark.png" data-bind="if: isReadOnly() && coffeeConsumed()">
  <input type="checkbox" data-bind="ifnot: isReadonly, checked: coffeeConsumed">
</label>