【问题标题】:Angular - How can I clear factory variables when the view changes?Angular - 视图更改时如何清除工厂变量?
【发布时间】:2016-03-25 08:55:38
【问题描述】:

我对 Angular 还很陌生,所以请耐心等待。 :-) 我在一个视图中有一个联系人列表。我用一些 setter 和 getter 函数组合了一个服务来保存联系人 ID。当用户单击列表视图上的联系人时,它会在服务中设置 ID 并移动到编辑表单视图。这工作得很好,但是当我完成编辑并单击返回列表视图时,我想清除服务中的变量。我该怎么做? 我找到了关于这个主题的另一个答案,但我认为它使用的是内置的角度路由器而不是 ui-router。

Angular updating and clearing factory variables

另外,当用户首先从列表移动到编辑表单时,该答案中的方法是否也会清除变量?

谢谢!

【问题讨论】:

  • 为什么要在服务中保留这些信息?我会将集合保存在服务中,并使用路由参数告诉视图要查找的项目。
  • 正如我所说,我是 Angular 新手。根据我收集到的信息,为了将信息从一个控制器传递到另一个控制器,我需要使用一项服务。让我重申:我是新人。 :-D 如果你能以更好的方式给我更多细节,我会全神贯注——呃……眼睛。谢谢!
  • angularjs 教程有一个很好的例子docs.angularjs.org/tutorial。也就是说,angularjs 在业务逻辑层应该存在的地方有一个大洞。我认为大多数高级开发人员最终都会创建一个。

标签: angularjs angular-services


【解决方案1】:

如果是路线变更,您可以使用 $locationChangeStart,请参阅 $location

例如在您的编辑控制器中,注册路由更改事件:

var onloc = $scope.$on('$locationChangeStart', function (event, newUrl, oldUrl) {                
    myService.cleanUp(whatever);
    onloc();           
});

【讨论】:

  • “=>”是有效的js语法吗?我的编辑对此感到窒息。
  • 不得不更改为:$scope.$on('$locationChangeStart', function (event, newUrl, oldUrl) 但它有效。谢谢!
  • 是的,对此很抱歉 - 我使用 TypeScript,只是在运行时将其输入,很高兴它解决了。我已经删除了代码示例中的糖。
  • 啊,太好了。谢谢!我还没有深入了解 js 的所有编码助手。我将 sass 用于 css,但仅​​此而已。 :-)
猜你喜欢
  • 2015-08-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 2015-08-16
  • 2016-05-13
相关资源
最近更新 更多