knockoutjs中的双向绑定

时间:2012-01-26 11:02:05

标签: knockout.js

我刚刚开始使用knockoutjs。在下面的代码中,我只是试图以双向方式绑定DIV的宽度。

var ViewModel = function () {
    this.width = ko.observable(7);
};

ko.bindingHandlers.widthBinding = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var div = $(element);
        var value = valueAccessor();
        var Width = ko.utils.unwrapObservable(value);
        div[0].style['width'] = Width + "px";
    },
    update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var value = valueAccessor();
        var Width = ko.utils.unwrapObservable(value);
        div[0].style['width'] = Width + "px";
    }
};
$("#contentDiv").enableResize();
ko.applyBindings(new ViewModel());

<input data-bind="value: width" />
<div id="contentDiv"  data-bind="widthBinding : width" >

在上面的代码中,我有两个UI元素,一个是文本输入,另一个是DIV。我们可以在运行时调整DIV的大小。如果我在文本输入中输入一些数字将适用于DIV的宽度,那就行了。同时,如果我在运行时调整DIV大小,则意味着其宽度应反映在文本输入中。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用样式绑定来更改宽度:

<input data-bind="value:width ,style : { width : width()+'px' }" />

http://jsfiddle.net/gurkavcu/GHgX7/

相关问题