示例 jsFiddle
部分工作,我可以渲染对话框,添加 N 个提交并删除一个 - 但我无法编辑......
我创建了一个自定义绑定处理程序,它呈现一个显示子问题列表的 jQuery UI 对话框。一旦这些都完成并按下Save Changes按钮,它会使用 observable 的副本ko.toJS(observable)
并将其添加到数组中,然后将其添加到observableArray
我的视图模型中,就像这样。
var submission = [];
viewModel.selectedQuestion().subQuestions().forEach(function (sq) {
submission.push(ko.toJS(sq));
});
viewModel.submissions.push(submission);
我已将一个函数附加到视图模型,以删除这样的给定提交。
viewModel.deleteSubmission = function (submission) {
var index = 0;
viewModel.submissions().forEach(function (s) {
if (s === submission) {
viewModel.submissions.splice(index, 1);
}
index++;
});
};
但是我对如何编辑提交、使用给定模型再次渲染对话框感到有些困惑。我知道ko.renderTemplate
并且目前正在尝试这条路线,但我认为ko.toJS
我添加到我的提交数组中的副本正在阻止 Knockout 做它的事情。
有没有人有任何指示可以将我推向正确的方向?我目前正在阅读Knockout 中的一个简单的编辑器模式,因此我非常有信心在取消编辑对话框时可以处理所有commit
问题rollback
- 我只是不确定如何编辑已保存的提交。
尝试1:jsFiddle
我创建了第二个自定义绑定处理程序editSubmissionDialog
,并将其添加selectedSubmission
到我的视图模型中。这是打开对话框 - 但由于ko.toJS
(我认为)传递给对话框的项目是不可观察的。另外,我真的必须创建另一个使用相同对话框的自定义绑定处理程序,希望不是。