0

我在 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);
}
4

2 回答 2

1

You have a mistake in your data binding, instead of data-binding you should have had data-bind

Here is a working 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>

Here is the 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);
}
于 2013-10-03T13:29:13.923 回答
0

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

另外,不确定这是否只是一个剪切和粘贴错误,但这段代码看起来有点不合适:

viewModel.vmProduct.ProductName("Estera");

确保viewModel在创建之后设置值。

于 2013-10-03T13:20:59.187 回答