我一直在尋找,並沒有看到這個特定的場景解釋。我希望任何人都可以提供幫助!我正在使用knockoutjs和jQuery。我正嘗試在foreach綁定中使用點擊綁定將數據值傳遞給另一個viewmodel。我從click事件中檢索數據對象,但我不明白如何讀取該數據對象中的實際值,以便將其傳遞給第二個viewmodel。使用knockoutjs點擊綁定,我如何將一個viewmodel的值傳遞給另一個viewmodel?
這裏是從第1視圖模型我的HTML:
<div id="collapseOne" class="accordion-body collapse in" data-bind="foreach: { data: model.savingsAccounts, afterRender: changeOption }">
<div class="accordion-inner" data-bind="css: getRow(), click: $parent.goToDetails">
<span class="tableArrow"> </span>
<span class="tableColumnLeft">Savings<br><span data-bind="text: $data.accountNum" /></span>
<span class="tableColumnCenter">$<span data-bind="text: $data.currentBalance" /></span><span class="tableColumnRight">></span>
</div>
</div>
我需要的「12345」的「$ data.accountNum」價值傳遞給第二個視圖模型時goToDetails評估。
下面是我在goToDetails,這是在我返回模塊定義:
goToDetails: function (data, event) {
var thisItem = koMapping.fromJSON(data.data);
alert(thisItem.accountNum);
details.currentAccountID = thisItem.accountNum;
shell.navigate('details', 'next');
},
這裏是我的對象中的數據:
+ this
+ arguments
- data
accountNum "12345"
accountType "Savings"
currentBalance "10.22"
+ event
警報顯示「不確定」的價值thisItem.accountNum。如何獲取accountNum的實際值?另外,在我導航之前,你是否都有更好的建議來將值傳遞給第二個viewmodel,而不是設置它?我不能使用查詢字符串。另外,我們沒有一個會議。
非常感謝您的時間!
加入我們整個viewmodel.js代碼的要求:
define(['knockout', 'knockout-mapping', 'jquery', 'viewmodels/shell', 'viewmodels/details'], function (ko, koMapping, $, shell, details) {
var self = this;
var savingsAccounts = ko.observableArray();
self.activeOption = 'A';
self.changeOption = function() {
if (self.activeOption == 'A') {
self.activeOption = 'B';
} else {
self.activeOption = 'A';
}
};
self.getRow = function() {
if (self.activeOption == 'A') {
return 'balancesRowB';
} else {
return 'balancesRowA';
}
};
function buildSavingsAccounts() {
savingsAccounts([
{ accountNum: '12345', accountType: 'Savings', currentBalance: '10.22' }
]);
}
// module instance
return {
model: {
savingsAccounts: savingsAccounts
},
activate: function (activationData) {
buildSavingsAccounts();
},
goToDetails: function (data, event) {
var thisItem = koMapping.fromJSON(data.data);
alert(thisItem.accountNum);
details.currentAccountID = thisItem.accountNum;
shell.navigate('details', 'next');
}
};
});
你能粘貼你綁定javsacript代碼嗎? – seba47
這是我們完整的viewmodel.js。請讓我知道,如果你想看到別的。 – user2847376
我不確定你爲什麼使用ko.mapping插件。另外,你可能不應該使用'data.data'。如果你只是做console.log(data.accountNum);在goToDetails的第一行,它應該記錄accountNum值就好了。 –