我正在使用KnockoutJS编写一个小应用程序,用户可以通过键入文本来输入字段来编辑“产品”,这些字段将自动更新图像顶部的可查看文本框。这允许用户在购买例如Plaque之前预览可雕刻的线条。
所以这是我的问题:
我有一个包含observableArray(product.lines)的对象(产品):
self.product = ko.utils.arrayMap(jsonData, function(data) {
return new CustomizableProduct(
data.sku, data.name, data.lines, data.fonts, data.plates)
});
function CustomizableProduct(sku, name, lines, fonts, plates) {
return {
sku: ko.observable(sku),
name: ko.observable(name),
lines: ko.observableArray(lines),
fonts: ko.observableArray(fonts),
plates: ko.observableArray(plates)
}
}
jsonData:
var initialData = [
{
"sku": "PMW",
"name": "Premium Genuine Walnut Step Edge Plaque",
"plates": [
{
"sku": "plateSKU",
"name": "plateName",
"img": "/images/plates/plateSKU.jpg"},
{
"sku": "plateSKU2",
"name": "plateName2",
"img": "/images/plates/plateSKU.jpg"}
],
"lines": [
{
"label": "Line 1",
"value": "Line 1",
"type": "input",
"characterLimit": "146"},
{
"label": "Line 2",
"value": "Line 2",
"type": "input",
"characterLimit": "156"},
{
"label": "Line 3",
"value": "Line 3",
"type": "submit",
"characterLimit": "176"}
],
"fonts": [
{
"font": "Times New Roman"}
]}
];
product.lines是循环的,并创建输入框,其默认值设置自对象(值:$ data.value)。这些输入框可由用户编辑。我还需要将输入框的值显示为其更新类型,以用作预览所输入的内容。当我输入一个新单词时,它会在对象中更新,但是需要显示该值的字段不会更新。
我的代码有一个jsFiddle:http://jsfiddle.net/pR6xp/2/
编辑输入字段时,我需要编写什么才能通过更新来更新该值?
谢谢..
答案 0 :(得分:2)
您创建了一个observableArray行,但是当对象被添加到observableArray时,它们的属性不会变为可观察的,这由您来实现。
我添加了一个具有可观察值的ProductLine对象,并使用这些对象初始化了lines集合。
希望这有帮助。