我在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);
}
答案 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
后设置值。