我正在学习knockout.js。我有一个基本的网页,允许用户添加和编辑实体。为了避免重复,我想在视图模型中定义实体的实例,就像在Silverlight中可以做的那样。
<input id="orderQuantity" type="text" data-bind="value:order.quantity" />
<input id="orderPrice" type="text" data-bind="value:order.price" />
<select id="orderType" data-bind="options:orderTypes">
var viewModel = {
order: ko.observable(null),
orderTypes: ko.observableArray(['Priority', 'Express', 'Normal' ]),
init: function(o) {
// Determine if we're working with an existing order, or a new one.
if (o == null) {
this.order(null);
}
else {
this.order(new order(o));
}
}
};
$().ready(function () {
ko.applyBindings(viewModel);
});
// The following is defined in a seperate .js file.
// I've verified its getting called by using an 'alert'
var order = function(o) {
this.id = o.id;
this.quantity = o.quantity;
this.price = o.price;
this.orderType = o.orderType;
}
我的问题是当我打电话给init时,我注意到订单已经创建了。但是,与订单关联的值不会绑定在表单元素中。如何使这个表格有效?我想菊花链,以便我可以保持我的类定义分开,以便我可以重复使用它们。
谢谢!
答案 0 :(得分:1)
不确定这是否是最适合您的解决方案,但我在http://jsfiddle.net/photo_tom/vcu67/1/工作。
有两个问题 -
希望这符合您的需求