2012-04-19 151 views
2

我使用KnockoutJS編寫了一個小應用程序,用戶可以通過在輸入字段中輸入文本來編輯「產品」,以便自動更新圖像頂部的可查看文本框。這允許用戶在購買例如斑塊之前預覽可雕刻線。knockoutjs - 可觀察到的可觀察值的對象的observableArray

因此,這裏是我的問題:

我有一個對象(產品)持有的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/

什麼我需要編寫獲得該值時,它通過編輯輸入字段更新的更新嗎?

謝謝..

回答

2

創建線的observableArray但是當對象被添加到一個observableArray它們的屬性不會成爲觀察到的,這是留給你高達落實。

我添加了一個具有可觀察值的ProductLine對象,並用這些對象初始化了線條集合。

http://jsfiddle.net/vRBhP/1/

希望這有助於。

+0

哇謝謝!那就是訣竅。再次感謝。 – 2012-04-19 21:14:32

+0

答案是正確的,但我無法真正理解如何使其適應我的代碼。這是什麼使我的解決方案: http://code.tutsplus.com/tutorials/knockout-observables--net-31293 – 2015-06-02 05:50:37

相關問題