只有当元素具有特定的css类时,我才可以数据绑定元素的宽度吗?
问题描述:
我想将div元素的宽度绑定到viewModel的属性上,但只有当div有特定的css类时才可以。只有当元素具有特定的css类时,我才可以数据绑定元素的宽度吗?
因此,像这样:
<div data-bind="style: {width : $element.hasClass('dynamicWidth') ? getWidth : ''}">
任何人都知道,如果有一种方法可以做到这一点?
答
您可以对此使用自定义绑定。下面是简单的例子:
ko.bindingHandlers.widthEx = {
update: function(element, valueAccessor) {
var options = valueAccessor();
var property = ko.utils.unwrapObservable(options.property);
var className = options.class;
if($(element).hasClass(className)){
$(element).width(property);
}
}
};
var vm = { width: ko.observable(100)};
ko.applyBindings(vm);
<div data-bind="widthEx: {property: width, class: 'Test'}">
这里是工作提琴:http://jsfiddle.net/wRyAg/2/