我一直在玩knockoutjs,到目前为止,我在视图中列出了一系列项目。
我可以使用各种按钮更新,创建和删除它们。
我也有能力保存,当发生这种情况时,我的viewmodel会以json的形式发送到服务器,并在那里处理它。
我担心此时效率会稍低。
我目前有一个foreach循环,可以查看每个项目。
然后我一次查询每个项目1,如果它不存在我认为它是新的并添加它,如果它有_destroy = true,我删除它,最后如果它确实存在我只需用它取代它从服务器发回,这是持久更新的地方。
这对我来说似乎很浪费。
1)我从视图中发回每一行。
2)然后,即使没有任何变化,我也会在到达服务器时检索每一行。
是否有办法标记“注意”行,只将这些行发送回服务器。
例如,假设我的视图中有4行显示。 我向viewmodel添加一个新的,编辑现有的一个并删除另一个。
我只想将这3行发送回服务器...忽略那些未更改的行。
也许我可以添加并检查类似于_destroy当前工作方式的特定标志?
因此添加项目会添加_create标志,编辑会添加_update标志等。
抱歉,我希望这看起来不像华夫饼干。
你会如何建议处理这个?
谢谢,Kohan。
答案 0 :(得分:2)
以下是可能有用的示例:http://jsfiddle.net/rniemeyer/gfkej/
它基于:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html
基本思想是为每个项添加一个脏标志,然后创建一个代表所有脏项的dependentObservable。过滤脏项时,还会检查是否在项上设置了_destroy
。添加新项时,脏标志允许您传入布尔值以指示它应立即被视为脏。在我的示例中,我只是传递id === 0
,因为我正在将id初始化为0以获取任何新项目。