ko.applyBindings不起作用

时间:2013-10-03 13:14:50

标签: asp.net-mvc knockout.js

我在MVC 4中有这个代码,而ko.applyBindings不起作用。这不是绑定。我怎样才能使它发挥作用?

这是我在html中的代码:

 <div class="input-group">
        <div class="input-append-double full-width">
            <input id="ProductName" placeholder="Product Name" data-binding="value: 

$root.vmProduct().ProductName" type="text"/>
    </div>
    </div>

这是我在javascript / jquery中的代码:

 var ProductModel = function () {
            var self = this;
            self.ProductName = ko.observable();

            self.ProductName.subscribe(function (value) {
                console.log(value);
            }.bind(self));
        };

            viewModel.vmProduct.ProductName("Estera");
        };

        var viewModel = {
            vmProduct: new ProductModel()
        };

        $(document).ready(function() {

            ko.applyBindings(viewModel);
}

2 个答案:

答案 0 :(得分:1)

您的数据绑定有误,而不是data-binding您应该有data-bind

这是一个有效的Fiddle

<div class="input-group">
    <div class="input-append-double full-width">
        <input id="ProductName" placeholder="Product Name" data-bind="value: vmProduct.ProductName" type="text" />
    </div>
</div>

这是JS

var ProductModel = function () {
    var self = this;
    self.ProductName = ko.observable();

    self.ProductName.subscribe(function (value) {
        console.log(value);
    });
};
var viewModel = {
    vmProduct: new ProductModel()
};
$(document).ready(function() {
    viewModel.vmProduct.ProductName("Estera");
    ko.applyBindings(viewModel);
}

答案 1 :(得分:0)

vmProduct看起来不是一个可观察的,所以当你进行value绑定时,你可以value: vmPRoduct.ProductName而不是value: vmProduct().ProductName

此外,不确定它是否只是剪切和粘贴错误,但此代码看起来有点不合适:

viewModel.vmProduct.ProductName("Estera");

确保在创建viewModel后设置值。