我对knockoutjs来说很新鲜。
我的问题是如何在asp.net MVC中使用ajax post serverside发布项目时如何更新observable数组中的项目。
某些值仅在服务器端重新计算。
我是否需要返回新列表,或者我只需要从服务器端返回更新的项目。
淘汰赛怎么知道改变哪个项目。 我没有运气就搜索了谷歌。
任何帮助都会受到赞赏。感谢。
答案 0 :(得分:0)
您需要将服务器请求的相应结果移动到绑定可观察数组。
示例:viewModel引用将其视为self。
self.tableData = ko.observableArray([{id: 1, name: 'XYZ' , score: 90},
{id: 2, name: 'XZZ' , score: 80}
]);
tableData绑定到html表。
现在你提出了ajax请求。然后,您将获得成功回调的响应。 考虑结果为result.TABLEDATA = [{id:3,name:'QUS',得分:60}, {id:4,姓名:'YYY',得分:70}];
现在我们需要将此数据移至self.tableData(result.TABLEDATA)
;
我希望这会对你有所帮助。
答案 1 :(得分:0)
这取决于更新项目中的值是否可观察。如果数组包含纯JavaScript对象,则Knockout无法检测到对它们的更改。
如果数组中的项目具有observable,则可以。
此示例演示了这一点:http://jsfiddle.net/Quango/27tfmp0o/
self.Items = ko.observableArray([
{ Name: "Plain object", ID: 1},
{ Name: ko.observable("Knockout object"),
ID: ko.observable(2)
}
]);
第一项是普通物体。单击“更改第一个”按钮可更改对象,但屏幕上不显示任何内容。第二个具有可观察的值,因此单击“更改第二个”会更新项目。
如果您不想使用observable,最好的选择是从数组中删除该项,更改它,然后重新添加它 - 通过单击“Replace 1st”
来演示