我有一个简单的SPA有两个视图:一个列表视图和一个详细视图。我使用名为StateService的服务在两个控制器之间传递数据。用AngularJS服务和视图处理页面刷新
我想处理用户刷新浏览器页面的情况 - 当发生这种情况时,StateService被重新初始化并且详细视图不能再工作。我想要检测何时发生这种情况,并将用户返回到列表视图。
这是我的国家服务的简化版本。我的想法是,当我切换到详细信息视图时,我会将isInitialized设置为true,以便可以检测服务何时未正确初始化。
var StateService = function() {
var isInitialized = false;
};
这是我在我的控制器的前几行尝试过的。 StateService正在成功注入控制器。
//always returns [Object], on refresh or navigating from list page
alert(StateService);
// this next line always returns undefined. Should be false since I am initializing
// the value to false?
alert(StateService.isInitialized);
//One of the many combinations I have tried . . .
if (!StateService.isInitialized | StateService.isInitialized == false) {
$location.path('/');
}
我不知道这是我的JavaScript或角度的理解有差距,但我如何能得到上面的代码的任何想法工作,或做什么更好的想法,当用户刷新这一页?
编辑
使用的console.log所推荐的nycynik我看到以下内容:
13 C {} [的StateService]
未定义[StateService.isInitialized]
所以看起来StateService本身只是一个空的对象,当这段代码被击中时。我从其他控制器(处理列表视图的控制器)获得相同的结果。
正如评论中指出的那样,该服务似乎按预期工作。
我对你的StateService有点困惑,不应该将它与AngularJS的服务或工厂函数一起创建为真正的AngularJS服务。 看来你的StateService并不是真正的AngularJS服务,因此不能正确初始化... – DanEEStar
服务本身只是一个函数,并通过app.service()绑定到模块/应用程序。我正在这样做,但我没有在这里显示这些代码。该服务在其他方面功能完全正常 - 这就是我正在努力解决的问题中所描述的问题。 –
你能告诉你的网址,并在创建时相应地填充服务吗? – akonsu