敲除获取绑定到 DOM 元素的可观察量
knockout get observables bound to DOM element
我正在为挖空进行只读绑定。
如果我对每个元素应用绑定,我就可以很好地工作,如以下小提琴所示: http://jsfiddle.net/paulinfrancis/wDJ9n/
但是,我希望能够将绑定设置为视图的根元素,而不是在每个表单元素上:
<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);
}
})
}
}
}
我不确定如何获取元素绑定到的视图模型属性名称,以便我可以将现有元素替换为我选择的只读对应项。
我可以使用 dataFor 或 contextFor 访问我需要的值,但我需要先知道绑定的属性名称:
ko.dataFor(domElement)['observableOne']()
ko.contextFor(domElement).$data['observableOne']()
我当然可以解析每个元素上的数据绑定属性,但这似乎很脏。还有其他更好的方法吗?
您确定 Knockout "启用"或"禁用"绑定对您不起作用吗?它们都可以共享相同的"只读"可观察标志。
http://knockoutjs.com/documentation/enable-binding.html
<p>
Your cellphone number:
<input type='text' data-bind="value: cellphoneNumber, enable: hasCellphone" />
</p>
...
var viewModel = {
hasCellphone : ko.observable(false),
cellphoneNumber: ""
};
我认为
,根据您对 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>
相关文章:
- 如何使用javascript设置元素旋转和动态观察的动画
- 使用挖空.js如何刷新 Select 元素中的可观察数组
- 观察任何元素何时更改
- 突变观察者未能检测到元素's删除dom
- 敲除可观察数组并没有更新从数组中移除元素的视图
- 手动调整元素大小;不要在Chrome中激发突变观察者
- 初始化可从元素属性值观察到的Knockout
- 原型JavaScript Event.observe-如何观察可能存在或不存在的元素
- 根据某些条件将 JS 绑定到可观察对象内的数组元素
- 如何观察聚合物元素属性值从索引.html的变化
- 正在更新挖空.js可观察数组元素值
- KNOCKOUTJS 将多个输入元素绑定到一个可观察量
- 如何使已导入 ajax 的元素可观察
- 使用突变观察者将 DOM 元素列入黑名单
- 在 html 中的文本字段和
元素之间观察到额外的间距
- 敲除获取绑定到 DOM 元素的可观察量
- 通过动态插入的 DOM 元素进行 AJAX 调用,我是否必须使用突变观察器
- 观察元素位置并对 AngularJS 中的更改做出反应
- Knockout.js:将元素添加到可观察数组
- 从属性指令中观察元素的ngModel