我是淘汰赛的新手,我几个小时都在研究我的主题无济于事,所以我终于发现自己实际上问了一个问题,我不认为已经问。
无论如何,我正在编写一个基本的单页应用程序,它通过AJAX(完成)从服务器提取数据,显示这些记录的表(工作,但可能没有完成),并使用户能够编辑记录从jQueryUI对话框中的表格中的表格,最好不加载来自服务器的更多数据,因为所有需要的数据当前都在表格中(这是我搞砸了的地方),然后最终只发布一条记录服务器。作为奖励,我希望使表单更新表中的内容,以便不需要重新加载。
我的基本视图模型。我还有一些绑定代码,用于通过单击我遗漏的标题对列进行排序,因为它与问题无关
function AppViewModel() {
var self = this;
self.records = ko.observableArray(ajaxRecords); //ajaxRecords is a JSON object from the server
/*
THIS SECTION MOVED BELOW FOR EXPLANATION
*/
}
我已经能够通过使用从每行的click函数绑定传递对象的新viewModel将数据导入表单:
self.switchDataToForm = function(clickedItem) {
ko.applyBindings(new FormViewModel(clickedItem), document.getElementById('detailsPage'));
}
但我觉得这是一种糟糕的做事方式,这应该可以通过一个ViewModel实现。
我很想知道人们对此有什么看法。对于一些人来说,这可能是非常明显的,但我只是很难绕过淘汰赛的思维方式。如果这是一个jQuery任务,它将在几个小时前完成,但有更多的标记。我对Knockout JS提供的JS开发场景感到非常兴奋,我想在实践中开始使用它。
答案 0 :(得分:0)
您可以尝试这样的事情:
function AppViewModel() {
var self = this;
self.records = ko.observableArray(ajaxRecords); //ajaxRecords is a JSON array from the server
self.form = ko.observable();
self.switchDataToForm = function(clickedItem) {
self.form(new FormViewModel(clickedItem));
}
/* another data goes here */
}
function FormViewModel(item) {
var self = this;
self.someProp = ko.observable(item.someProperty);
/* another observables goes here */
}
和html:
<form id="detailsPage" data-bind="with: form">
<input type="text" data-bind="value: someProp" />
...
</form>
你可以在这个小提琴中看到它是如何运作的:http://jsfiddle.net/Ivan_Srb/MKB8W/2/