在我们使用AngularJS之前,我必须解决以下问题
Maintaining application state across single page view flips and multi-page flips
我已经启动了一个视图状态服务,并尝试将其集成到应用程序中。如果我手动调用所有的东西,它的效果很好。我的问题是我想让我的viewstate对象自动更新,所以开发人员不必做任何事情,他们只是包含一些东西,它只是工作。
我试图遵循angulars源代码,但功能程序很难调试它是一个痛苦。是否有一个文件(除了这个http://docs.angularjs.org/api/ng。$ rootScope.Scope,这几乎没用),它解释了角度内的事件系统?具体来说,我希望能够提取系统中注册的事件列表。
这是我设计的尝试。
任何时候输入字段,单击一个按钮,列被排序,我想要触发一个触发我的viewstate服务的事件。该视图状态服务在sorta中记录事件,如delta V类型布局。
当一个指令初始化时,我希望触发一个事件再次触发View State服务,该服务查看其内部增量存储,如果该指令存在,它将回放增量以将指令返回到状态它在之前。
当一个人在Angular之外导航时(在我的情况下从angular跳到一个传统的struts应用程序),视图状态服务会自动将增量存储存储到redis数据库。
如果用户将按钮返回到角度应用程序,则角度初始化会命中redis数据库并拉下存在的任何增量。
我将所有这些工作在手动布局中,但我需要它自动化。
在这个时刻,我真的不在乎如何使用事件系统,现在我需要知道如何看待它的工作。我需要能够单击一个按钮,看看被激活的内部事件,使角度做它做的事情。我怎么把它拉下来? Angular开发人员在编写事物时如何调试事件系统?
答案 0 :(得分:0)
这样的事情怎么样?您可以使用angular $ watch函数,以便...观察范围属性的更改并相应地保存它们。
var app = angular.module('app',[])
.directive('aDirective',[ 'redisService', function(redis){
return {
restrict: 'A', // or otherwise
templateUrl: "aDirectiveTemplate.html",
controller : ['$scope', function($scope){
// initialization
var savedState = redis.hasData('someKey');
if(savedState){
$scope.model = savedState;
}else{
$scope.model = {
prop1: 1,
prop2: 2
}
}
}],
link: function(scope, elem, attrs){
// set up watcher when directive is linked.
// observes changes to properties assigned to scope & fires callback.
scope.$watch(function(){
redis.saveDelta(scope.model);
});
}
}
}]);
// ...