我非常新的使用KnockoutJS作爲一個框架,我(顯然)遇到了問題,我不能(或者更可能的,我沒有足夠的技術來)找到。更新項目陣列
我有該產品組和產品的每個組包含的產品陣列。現在,我設法顯示產品組列表和所有產品列表,沒有太多問題。當用戶用鼠標右鍵單擊包含產品的div並減少產品數量時,我想要增加產品數量。
我已正確設置事件處理程序,因爲他們被解僱和處理,沒有任何問題和數量改變,但我似乎無法得到它反映在頁面上。
標記:
<div class="viewProductGroup" data-bind="with: productGroupData">
<h2 data-bind="text: Title"></h2>
<div class="stickies" data-bind="foreach: Products">
<div data-bind="click: $root.addProduct,
event: { contextmenu: $root.removeProduct }">
<span data-bind="text: Title"></span><br />(<span data-bind="text: Quantity"></span>)</div>
</div>
</div>
摘自JS:
function StickyExViewModel() {
var self = this;
self.productGroupData = ko.observable();
// Behaviors
self.addProduct = function (item) {
item.Quantity++;
}
self.removeProduct = function (item) {
item.Quantity--;
}
}
ko.applyBindings(new StickyExViewModel());
現在,我相信,我不明白的地方或者已經錯過了一些佈線。你能幫忙嗎?
編輯
在這裏從WCF服務獲得JSON:
{"d":
{"__type":"ProductGroup:#Stickyex.Services",
"Created":"\/Date(1373407200000+0200)\/",
"ID":1,
"Products":[
{"__type":"Product:#Stickyex.Services","Code":"0","ID":0,"Quantity":0,"Title":"0"},
{"__type":"Product:#Stickyex.Services","Code":"1","ID":1,"Quantity":1,"Title":"1"},
{"__type":"Product:#Stickyex.Services","Code":"2","ID":2,"Quantity":2,"Title":"2"}],
"Title":"ProductGroup 1"}
}
代碼以獲得JSON數據(內部StickyExViewModel):
self.goToProductGroup = function(productGroup) {
$.get(serviceUrl, { ixProductGroup: productGroup.ID }, function (data) {
self.productGroupData(data.d);
});
}
你如何讓你的數據產品組?也許你正在以錯誤的方式訪問它們 –
然後你使用什麼來創建你的數組? ko.mapping.fromJSON()? –
我使用$ .get jQuery函數從WCF服務獲取JSON數據。 –