Jquery 重做-使用angular js对大数据执行撤消功能

Jquery 重做-使用angular js对大数据执行撤消功能,jquery,angularjs,undo-redo,Jquery,Angularjs,Undo Redo,目前我正在动态创建一个表,动态添加多行(类似于Excel)。表可以有数百万行 对于我使用过的重做/撤消功能。现在,当行数达到100时,redo/undo工作正常。如何在数据太大时提高重做/撤消性能 正在进行演示 注意:分页不适合我的情况。我想在scroll上加载数据 请推荐任何其他合适的angular插件或任何其他方法,以实现性能更好的重做/撤消功能。总之,您可以使用Memento Factory添加状态管理 下面是您需要的所有代码,但我的博客上还有一点背景信息: 函数MementoFactor

目前我正在动态创建一个表,动态添加多行(类似于Excel)。表可以有数百万行

对于我使用过的重做/撤消功能。现在,当行数达到100时,redo/undo工作正常。如何在数据太大时提高重做/撤消性能

正在进行演示

注意:分页不适合我的情况。我想在scroll上加载数据


请推荐任何其他合适的angular插件或任何其他方法,以实现性能更好的重做/撤消功能。

总之,您可以使用Memento Factory添加状态管理

下面是您需要的所有代码,但我的博客上还有一点背景信息:

函数MementoFactory(){
返回函数(){
var memento=此;
//私有财产
var subjects=arguments;//我们可以跟踪多个对象或数组
var stack=[];//每次调用“save”都会复制堆栈上的每个主题
var currentIndex=0;//堆栈上的“当前”位置
//首先保存当前状态
save();
//公共财产
memento.timestamp=null;//当前堆栈的时间戳
//公共方法
memento.save=保存;
memento.canUndo=canUndo;
memento.undo=undo;
memento.canRedo=canRedo;
memento.redo=重做;
函数save(){
变量快照={
时间戳:Date.now(),//保存时间
主题:[],//包含每个主题
};
对于(var a=0,al=subjects.length;a0;
};
函数undo(){
if(canUndo()){
恢复napshot(-1);
}
};
函数canRedo(){
返回电流指数
创建一个新的Memento(…)对象,传递要跟踪的非基本变量

ctrl.user={name:'David King',location:'England'};
ctrl.tags=['AngularJS'、'Angular'、'Firebase'];
//创建新的Memento对象
var memento=newmemento(ctrl.user,ctrl.tags);
//公开撤消和重做方法
ctrl.canUndo=memento.canUndo;
ctrl.redo=memento.redo;
ctrl.canRedo=memento.canRedo;
ctrl.undo=memento.undo;
向视图中添加撤消和重做按钮

Undo
重做
适当时保存您的纪念品对象



。。。就这样

总之,您可以使用Memento工厂添加状态管理

下面是您需要的所有代码,但我的博客上还有一点背景信息:

函数MementoFactory(){
返回函数(){
var memento=此;
//私有财产
var subjects=arguments;//我们可以跟踪多个对象或数组
var stack=[];//每次调用“save”都会复制堆栈上的每个主题
var currentIndex=0;//堆栈上的“当前”位置
//首先保存当前状态
save();
//公共财产
memento.timestamp=null;//当前堆栈的时间戳
//公共方法
memento.save=保存;
memento.canUndo=canUndo;
memento.undo=undo;
memento.canRedo=canRedo;
memento.redo=重做;
函数save(){
变量快照={
时间戳:Date.now(),//保存时间
主题:[],//包含每个主题
};
对于(var a=0,al=subjects.length;a0;
};
函数undo(){
if(canUndo()){
恢复napshot(-1);
}
};
函数canRedo(){
返回电流指数