可以向我解释如何使用Return模式创建嵌套循环。
在下面的代码中,我返回一个'dialog'数组。对于对话框数组中的每个项目,我想调用我的'loadAnswers'方法,并向用户显示该对话框的可能答案列表。
目前我正在为每个对话框返回相同的答案集,这不是我想要的。我已经将'1000'硬编码到我的代码中,但它应该是data.DialogueID。
由于 熔体
my.vm = (function () {
dialog = ko.observableArray([]),
answers = ko.observableArray([]),
loaddialogueCallback = function (data) {
data.forEach(function (data) {
dialog.push(new my.Dialog1()
.dialogueId (data.DialogueID)
.sortId (data.SortID)
.picId (data.CharacterID)
.picDesc (data.CharacterDescription)
.pic (data.CharacterPhoto)
.beforedialogue(data.BeforeDialogue)
.dialogue (data.Dialogue)
.afterdialogue (data.AfterDialogue)
);
});
},
loadAnswersCallback = function (data) {
data.forEach(function (data) {
answers.push(new my.Answer()
.answerid(data.AnswerId)
.answer(data.Answer)
.correct(data.Correct)
);
});
},
loadDialogue = function () {
my.DataService.getDialogue(my.vm.loadDialogueCallback);
},
loadAnswers = function () {
my.DataService.getAnswersList(1000,my.vm.loadAnswersCallback);
};
return {
Dialog: dialog,
loadDialogueCallback: loadDialogueCallback,
loadDialogue: loadDialogue,
Answers:answers,
loadAnswersCallback: loadAnswersCallback,
loadAnswers:loadAnswers,
};
})();
my.vm.loadAnswers();
my.vm.loadDialogue();
ko.applyBindings(my.vm);
我的观点
<!-- Loop through Dialog -->
<div id="Dblock" data-bind='template: { foreach: Dialog, }'>
<!-- Dialog Data is Here-->
<!-- The Answers -->
<span id="answers" data-bind='foreach:$root.Answers'>
<a id="answer" data-bind='text:answer, click: function () { myanswer($parent.dialogue(),answer(),$parent.dialogueId()) }'></a>
</span>
</div>
答案 0 :(得分:0)
我建议在您的Dialog对象中添加一个answers数组,并修改您的getDialogue服务以返回该对话框的答案,或者在对话框出来时拨打电话获取对话的答案。
您的答案将是:
<span id="answers" data-bind='foreach: answers'>